JSON
parse()
方法,顾名思义, 将 JSON 字符串表示形式反序列化为 JavaScript 对象.
JSON 字符串通常是从远程位置接收的(例如 API 响应),并且需要用于修改浏览器中的 UI.
parse()
方法采用从 API 响应接收到的 JSON 字符串,并将其转换为 JavaScript 对象.
parse()
方法可以选择使用reviver
函数 在返回结果对象之前对其执行转换.
1. JSON.parse() 语法
JSON.parse()
方法的语法是:
JSON.parse(string[, reviver])
请注意,JSON 字符串是有效的 JSON 文档,否则您将收到语法错误.
1.1. 方法参数
string
– 序列化的 JSON 字符串.reviver
– 一个可选函数,规定最初通过解析生成的值在返回之前如何进行转换.
1.2. 返回值
parse()
如果解析成功,该方法将返回 JavaScript 对象。返回值可以分配给一个变量,该变量允许稍后在整个程序中引用转换结果.
如果string
不是有效的 JSON 文档,parse()
则会出现 SyntaxError
异常.
2. JSON.parse() 示例
var jsonString = '{ "x": 5, "y": 6 }';
var obj = JSON.parse( jsonString );
console.log(obj);
程序输出.
{x: 5, y: 6}
3. JSON.parse() Reviver 函数示例
为 JSON 文档字符串中的每个名称-值对调用 reviver 函数,在将名称-值对添加到结果 JavaScript 对象之前,我们可以应用自定义逻辑来查找和修改任何值.
在此程序中,我们检查每个值类型,如果该值是偶数,则将其乘以 2.
var obj = JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
if(value % 2 == 0)
return value * 2; //如果值是偶数,则乘以 2
else
return value; //否则返回原始值
});
程序输出.
{1: 1, 2: 4, 3: {4: 8, 5: {6: 12}}}
4. JSON.parse() 与 JSON 数组
当parse()
在 JSON 数组字符串上使用 时,该方法将返回 JavaScript 数组,而不是 JavaScript 对象.
var jsonArrayString = '["A", "B", "C"]';
var arrObject = JSON.parse( jsonArrayString );
console.log(arrObject);;
程序输出.
["A", "B", "C"]