JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,我们常使用此格式进行前后台数据交互,因此,我们必须掌握js中对json数据的解析和转化,有不少方法可以实现,我们拿其中的几种方法进行简单讲解。
Ⅰ. 使用JSON.stringify() 和 JSON.parse() 方法。
IE支持情况:IE 8 标准模式、IE 9 标准模式、IE 10 标准模式、IE 11 标准模式。
IE不支持版本:Quirks、IE 6 标准模式、IE 7 标准模式。
如果要使用该方法解析和序列化json的话,需要注意使用的IE版本,IE7以下或者Quirks模式的IE浏览器将不支持该方法,所以需要下载json2.js并引入,以确保所有的IE浏览器都能使用这2个方法。
json2.js下载:https://github.com/douglascrockford/JSON-js
csdn备份下载:http://download.csdn.net/detail/czw2010/9150825
eg:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试</title>
<script type="text/javascript" src="js/json2.js"></script>-->
<script>
var person = {name:"张三",age:"22"};
console.log(JSON.stringify(person));
//输出为:"{"name":"张三","age":"22"}"
</script>
</head>
<body>
</body>
</html>
原型:
JSON.stringify(value [, replacer] [, space])
参数
- value
必需。 要转换的 JavaScript 值(通常为对象或数组)。 - replacer
可选。 用于转换结果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。 使用返回值而不是原始值。 如果此函数返回 undefined,则排除成员。 根对象的键是一个空字符串:”“。
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。 成员的转换顺序与键在数组中的顺序一样。 当 value 参数也为数组时,将忽略 replacer 数组。 - space
可选。 向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取。
如果省略 space,则将生成返回值文本,而没有任何额外空格。
如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。
如果 space 是一个非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符。
如果 space 是长度大于 10 个字符的字符串,则使用前 10 个字符。
原型:
JSON.parse(text [, reviver])
参数
- text
必需。 一个有效的 JSON 字符串(必须为标准的json格式,可以尝试使用response.responseText.replace(/\’/g, “’”)先将数据转为标准格式)。 - reviver
可选。 一个转换结果的函数。 将为对象的每个成员调用此函数。 如果成员包含嵌套对象,则先于父对象转换嵌套对象。 对于每个成员,会发生以下情况:
如果 reviver 返回一个有效值,则成员值将替换为转换后的值。
如果 reviver 返回它接收的相同值,则不修改成员值。
如果 reviver 返回 null 或 undefined,则删除成员。
Ⅱ. 使用eval()方法
可以简单使用eval()方法来解析json数据,但无法序列化json
eg:
<script>
var person = {name:"张三",age:"22"};
var str = JSON.stringify(person);
var person3 = eval('('+str +')');
console.log(person3.name); //输出"张三"
</script>
Ⅲ. jquery
未完待续…
参考文章:
https://msdn.microsoft.com/zh-cn/library/cc836458(v=vs.94).aspx