愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

Javascript学习总结——JSON

1、JSON是一种轻量级的数据交换格式,它具有如下的特点:

  • 1-1. 数据类型只有number、boolean、string、null、array、object
  • 1-2. 字符集必须是UTF-8
  • 1-3. 字符串必须使用双引号,object的键也必须使用双引号
    2、JSON的序列化,如:
var me = {
    name : "RuphiLau",
    birth: 1996,
    from : "福建",
    university: "福州大学"
};
JSON.stringify(me); // 将对象转化为JSON字符串
// 返回 {"name":"RuphiLau","birth":1996,"from":"福建","university":"福州大学"}

同时,stringify还可以指定第二个参数,来输出指定的键值对,如:

JSON.stringify(me, ['name', 'from']);
// 返回 {"name":"RuphiLau","from":"福建"}

第二个参数也可以传入一个参数,来对每一个键值对做相应的处理,如:

JSON.stringify(me, (key, value) => {
    if(key == "birth") {
        value = new Date().getFullYear() - value;
    }
    return value;
});
// 返回 {"name":"RuphiLau","birth":21,"from":"福建","university":"福州大学"}

还可以加上第三个参数,按缩进输出,如:

JSON.stringify(me, null, "  ");
/*
返回:
{
  "name": "RuphiLau",
  "birth": 1996,
  "from": "福建",
  "university": "福州大学"
}
*/

此外,我们还可以在对象中定义toJSON方法,这样子会在调用JSON.stringify()的时候,直接调用toJSON方法来返回JSON应该序列化的数据
3、JSON的反序列化,反序列化可以使用

JSON.parse(jsonString);

同时,该方法接收第二个参数,可以作为解析后的回调处理