首页 > 代码库 > JS中JSON详解

JS中JSON详解

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

 

在JSON中,有两种结构:对象和数组。

1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:

  var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};

2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。例如:

  var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];

 

在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。

例如:

  JSON字符串:

  var str1 = ‘{ "name": "cxh", "sex": "man" }‘;

  JSON对象:

  var str2 = { "name": "cxh", "sex": "man" };

 

JS中生成和解析JSON

  1、JS中生成JSON对象的方法:

  var json = [];

  var row1 = {};

  row1.id= "1";

  row1.name = "jyy";

  或者

  var row2 = {id:‘2‘,name:‘abc‘}

  json.push(row1);

  json.push(row2);

 

2、JS中将JSON对象解析为字符串的方法:

  var jsonStr = JSON.stringify(json);

 

3、JS解析JSON对象或者字符串的方法:

  var objs = eval(json);或者var objs = eval(jsonStr);

  for(var j = 0;j<objs.length;j++){
    alert(objs[j].id);
    alert(objs[j].name);
  }

 

4、页面中Json对象与Json字符串互转(4种转换方式):

  1>jQuery插件支持的转换方式:

  $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象

  2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:

  JSON.parse(jsonstr); //可以将json字符串转换成json对象

  JSON.stringify(jsonobj); //可以将json对象转换成json对符串

  注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。 

  3>Javascript支持的转换方式: 

  eval(‘(‘ + jsonstr + ‘)‘); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 

  注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。 

  4>JSON官方的转换方式:

  http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法; 

  可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

 

JS中JSON详解