zoukankan      html  css  js  c++  java
  • JSON

    JSON.stringify() 

    参考文档

    JSON.stringify(value[, replacer [, space]])
    /*
      * value:json对象/数组
      * replacer:
      * ① 函数:在序列化过程中,被序列化的值每个属性都会经过该函数的转换和处理
      * ② 如果该参数时一个数组,则只有包含这个数组中的属性名才会被序列,化到最终的json字符串中
      * space:指定缩进用的空白字符串
      * 如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格
      * 如果该参数为字符串(字符串的前十个字母),该字符串将被作为空格
      * 如果该参数没有提供(或者为null)将没有空格
      */

    demo1:

    var obj = {
      name: 'Janny',
      age: 23,
      friends: ['Joe', 'Rose']
    }
    var c = JSON.stringify(obj,(key, value) => {
      return typeof value === 'string'? value.toUpperCase(): value
    },2)
    console.log(c)

    demo2: 

    const obj = {
      name: "houfee",
      age: 23,
      gender: "男"
    }
    const string = JSON.stringify(obj, ["name", "gender"])
    console.log(string) // {"name":"houfee","gender":"男"}

     JSON.parse()

    /*
     * JSON.parse(text[, reviver]) 返回值:Object类型, 对应给定JSON文本的对象/值。
     * text: 要被解析成JavaScript值的字符串
     * reviver: 转换器, 如果传入该参数(函数),可以用来修改解析生成的原始值,调用时机在parse函数返回之前。
     */

    demo1:

    const a = JSON.parse('{"p": 5}', function(k, v) {
      if (k === '') return v // 如果到了最顶层,则直接返回属性值,
      return v * 2 // 否则将属性值变为原来的 2 倍。
    }) // { p: 10 }
    
    const b = JSON.parse(
      '{"name": "小明", "age": 23}',
      function(k, v) {
        console.log(k) // 输出当前的属性名,从而得知遍历顺序是从内向外的,// 最后一个属性名会是个空字符串。
        return v // 返回原始属性值,相当于没有传递 reviver 参数。
      }
    )
    console.log(b)
  • 相关阅读:
    (转)关于IBM小机P520的面板使用
    (转)mysql的sql_mode合理设置
    (转)Mysql技术内幕InnoDB存储引擎-事务&备份&性能调优
    杨辉三角
    异或的陷阱(转)
    通过数组看栈堆
    数组的一些知识点和插入选择冒泡排序
    运算符
    Java的变量相关
    有符号的数据表示法(原、反、补)
  • 原文地址:https://www.cnblogs.com/houfee/p/9969527.html
Copyright © 2011-2022 走看看