JSON

作者: 陈裔松的技术博客 | 来源:发表于2018-12-27 15:53 被阅读0次

JSON数据格式

JSON的概念

JSON全称JavaScript Object Notation,通过键值对存储数据。JSON不是Javascript的子集,比如
JSON可以包含U+2028和U+2029,JS字符串不能。

JSON数据格式的特点
  • {起始,}结束的键值对或数组
  • 双引号包裹键名
  • JSON字符串中不可添加注释
JSON数据格式的优势
  • 数据结构更加简化,不需要成对标记
  • 对象查找方式比DOM结构化查找快速
  • JSON支持更丰富的数据类型
JS中如何使用JSON数据
  • JSON数据本质上是以个字符串
  • 可以通过eval,JSON.parse等方式转换为对象
  • 注意使用try catch
其他语言中如何使用JSON数据
  • 很多语言都内置了JSON的包,模块或函数
  • 从数据库/缓存等数据源中取出JSON数据格式
  • 转化为可用的对象或直接使用

JSON对象

JSON对象的特点
  • 仅有两个方法parse和stringify
  • parse方法和stringify方法调用时注意try catch
  • IE8支持,兼容性很好
JSON对象的方法
  • JSON.parse():将参数字符串转化为对象或值
// 第二个参数接受一个解析函数
// 注意去除尾逗号
console.log(JSON.parse('{"data": 1}'));   // {data: 1}
console.log(JSON.parse('null'));          // null
console.log(JSON.parse('"abc"'));         // abc
console.log(JSON.parse('{"data": 1},'));  // Throw Error,不能有尾逗号

// 第二个参数的解析函数是深度优先遍历
var str = '{"a":1,"b":{"c":5}}';
console.log(JSON.parse(str, function (k, v) {
  console.log(k);
  if(k === ''){
    return v
  }
  if(typeof v === 'number'){
    return v * 100;
  }
  return v;
}));

// a
// c  注意这里是深度优先遍历,所以c会先显示出来
// b
// {a: 100, b: {c: 500}}
  • JSON.stringify():将值或对象转换为JSON数据格式
// 第二个参数接受一个替换函数
// 第三个参数接受一个缩进格式
var obj = {"data":1,"a":{"b":5}};
var str = "abc";
var arr = [1,2,3];

console.log(JSON.stringify(obj));
// {"data":1,"a":{"b":5}}

console.log(JSON.stringify(str));
// "abc"

console.log(JSON.stringify(arr));
// [1,2,3]

console.log(
  JSON.stringify(arr,function(k,v){
    if(v === 3){
      return 5;
    }
    return v;
  })
);
//[1,2,5]

console.log(
  JSON.stringify(arr,function(k,v){
    if(v === 3){
      return 5;
    }
    return v;
  },2)
);
// [
//   1,
//   2,
//   5
// ]

console.log(JSON.stringify(obj,null,'--'));
// {
// --"data": 1,
// --"a": {
// ----"b": 5
// --}
// }

相关文章

网友评论

      本文标题:JSON

      本文链接:https://www.haomeiwen.com/subject/erzrlqtx.html