json

想写一篇文章,整理下自己对json的了解情况。

1.什么是json。

JSON,JavaScript Object Notation (javascript对象标记).
JSON是一种轻量级的文本交换格式,是text format.

JSON 是一种用来序列化对象、数组、数值、字符串、布尔值和null的语法.

2.json对象,json字符串,以及两者的相互转换。

json字符串:指的是符合json格式要求的js字符串。例如:var jsonObj = '{ "StudentID": "100", "Name": "tmac", "Hometown": "usa" }';
json对象:指符合json格式要求的js对象。例如:var jsonObj = { "StudentID": "100", "Name": "tmac", "Hometown": "usa" };

var jsonObj = { "StudentID": "100", "Name": "tmac", "Hometown": "usa" };

console.log(Object.prototype.toString.call(jsonObj))

运行结果为:[object Object],却不是[object JSON]。所以我认为此处json对象这种说法并无实际意义。我们说的JSON对象应该是JavaScript内置对象,它的两个方法用于序列化js对象和反序列化json字符串。

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

这里介绍4种json字符串和json对象相互转换的方法。

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。

3.应用场景实例。

3-1)json格式数据转成树状结构的json数据。

3-2)ajax交互,以json文本为数据传输格式。

4.使用的json的优点

参考

http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html

http://www.cnblogs.com/mcgrady/archive/2013/06/08/3127781.html

http://www.jb51.net/article/35090.htm

原文地址:https://www.cnblogs.com/web-coding/p/4789440.html