功能:
JSON.parse() 方法用来将 JSON
字符串解析成 javascript的值
或对象
,同时可以通过第二参数对解析值进行转换。
语法:
JSON.parse(text [, reviver]);
参数:
-
text
即JSON字符串,当参数格式不符合JSON规范时,会抛出 SyntaxError
异常
常规使用
JSON.parse('{}'); // {} JSON.parse('false'); // false JSON.parse('"string"'); // "string" JSON.parse('[1, 2, 3, { "name": "lisa"}]'); // [1, 2, 3, { name: "lisa"}] JSON.parse('null'); // null
当然也会出现特殊情况parse()方法处理不了,当要解析的字符串中存在 undefined
时会抛出错误。
-
reviver
转换器,如果传入该参数 (函数),可以用来修改解析生成的原始值。
JSON.parse('{"p": 5}', function (key, value) { return v * 2; }); // { p: 10 }
reviver
函数会从里到外遍历解析值,如上代码遍历到 p 这一层,对value进行修改,那么最后p属性对应的值为10。当遍历到最外层时,传入的是 ""
字符串,此时这个调用的值就成了 { "": 解析值 }
这样的格式
JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) { console.log(k); return v; });
这里输出顺序为 1 2 3 6 5 3 ‘ ’,注意这里最后一位空字符串。而且这里 return v
,可以知道 JSON.parse()方法默认返回的是 属性值,这里在函数处理时可以修改返回值。