JSON与JS对象的关系
JSON 是 JS 对象的字符串表示法,
它使用文本表示一个 JS 对象的信息,本质是一个字符串。
例如:
var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的。
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串。
JSON与JS对象互转
要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}。
要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'。
兼容问题
JSON方法只支持IE8以上的浏览器使用,若要兼容IE8以下的浏览器,则需要使用JSON2.js框架。
序列化(json对象转string)
var jsonObj = { id: '01', name: 'Tom' };
JSON.stringify(jsonObj);
反序列化(string转json对象)
var jsonString = "{ id: '01', name: 'Tom' }";
JSON.parse(jsonString);
注意
在一般开发中,服务端传递到前端的不一定是一个标准的字符串。
如:{error:0, id:1, time:152678495612, acc:0, ref:0}
而JSON方法只能转换标准的字符串。
如:{"error":"0", "id":"1", "time":"152678495612", "acc":"0", "ref":"0"}
所以,对于服务端传递到前端的数据如果不能保证是标准的字符串,那就要通过转换变成标准字符串。
JavaScript提供了eval()方法:
eval() 函数可计算某个字符串,并执行其中的JavaScript代码。
想要通过eval()方法转换JSON字符串(标准不标准都行),需要加上一对括号才能完成。
如:
var str = '{error:0, id:1, time:152678495612, acc:0, ref:0}';
var obj = eval("("+str+")");