JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。JSON也是 JavaScript 原生格式,这样就在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。

1、JSON 语法

JSON 格式在语法上与创建 JavaScript 对象代码是相同的。由于它们很相似,所以 JavaScript 程序可以很容易的将 JSON 数据转换为 JavaScript 对象。

JSON示例:

// 键值对的集合,值的有序列表
 {"name":"Levi", "like":["编程", "轮滑", "游戏"]}; 
//数组
 [
  {
    "name": "cjavapy",
    "type": "site"
  },
  {
    "name": "levi",
    "type": "person"
  }
]

语法规则:

1)数据为 键/值 对

示例中 "name": "cjavapy"就是键值对,namekeycjavapyvalue

2)数据由逗号分隔

3)大括号保存对象

4)方括号保存数组

 2、JSON对象和JSON字符串的转换

使用JSON.stringify()可以将JSON对象转成字符串,也可以通过JSON.parse()将JSON字符串转成JSON对象,

例如,

// 键值对的集合,值的有序列表
var JsonObj = {"name":"Levi", "like":["编程", "轮滑", "游戏"]}; 
var jsonstr = JSON.stringify(JsonObj);
console.log(jsonstr);
var jsonObject= JSON.parse(jsonstr);
console.log(jsonObject);

注意JSON.stringify() 方法的可选参数space,可以指定缩进用的空白字符串,用于美化输出(pretty-print)space参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数没有提供(或者为null)将没有空格。

 例如,

// replacer 分隔符 space 缩进
JSON.stringify(value[, replacer [, space]])
var formatJsonStr=JSON.stringify(jsonObject,undefined, 2);

3、遍历JSON对象和JSON数组

// 遍历JSON对象
var packJson  = {
  "name":"levi", 
  "password":"123"
};
for(var k in packJson ){  //遍历packJson 对象的每个key/value对,k为key
  console.log(k + " " + packJson[k]);
}
// 遍历JSON数组
var packJson = [
  {
    "name":"javascript", 
    "password":"123"
  },
  {
    "name":"levi", 
    "password":"456"
  }
];
for(var i in packJson){  //遍历packJson 数组时,i为索引
  console.log(packJson[i].name + " " + packJson[i].password);
}

4、递归遍历JSON

对于嵌套的JSON对象数据,我们需要使用递归来遍历。

例如,

var array = [{
  "type": "people",
  "name": "levi",
  "sex": "男",
  "age": 30,
  "objects": [{
    "type": "people",
    "name": "cjavapy",
    "sex": "男",
    "age": 31
  }, {
    "type": "people",
    "name": "python",
    "sex": "男",
    "age": 32
  }]
  }, {
      "type": "people",
      "name": "java",
      "sex": "男",
      "age": 33,
  }, {
      "type": "people",
      "name": "liang",
      "sex": "男",
      "age": 34,
      "objects": [{
      "type": "people",
      "name": "linux",
      "sex": "男",
      "age": 35
      }]
}];
var ageAll = [];
var findAge = function(arr) {
  arr.forEach(function(item) {
    if (item.age) {
      ageAll.push(item.age);
    }
    if (item.objects && item.objects.length > 0) {
      findAge(item.objects);
    }
  });
}
findAge(array);
console.log(ageAll);

5、相关函数

函数

描述

JSON.parse()

用于将一个 JSON 字符串转换为 JavaScript 对象。

JSON.stringify()

用于将 JavaScript 值转换为 JSON 字符串。

推荐文档