开发手册 欢迎您!
软件开发者资料库

JavaScript(JS) JSON介绍及使用

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

1、JSON 语法

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

JSON示例:

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

语法规则:

1)数据为 键/值 对

示例中 "name": "wonhero"就是键值对,namekeywonherovalue

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": "wonhero",    "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 字符串。