在 JavaScript 中解析 JSON?

2022-08-29 21:57:24

我想在JavaScript中解析一个JSON字符串。响应类似于

var response = '{"result":true,"count":1}';

如何从中获取值和值?resultcount


答案 1

在JavaScript中解析JSON的标准方法是JSON.parse()

JSON API是在ES5(2011)中引入的,此后已按市场份额在>99%的浏览器中实现,并且Node.js。它的用法很简单:

const json = '{ "fruit": "pineapple", "fingers": 10 }';
const obj = JSON.parse(json);
console.log(obj.fruit, obj.fingers);

您唯一无法使用的时间是如果您正在为古老的浏览器编程,例如IE 7(2006),IE 6(2001),Firefox 3(2008),Safari 3.x(2009)等。或者,您可能处于一个不包含标准API的深奥JavaScript环境中。在这些情况下,请使用 json2.js,这是由 JSON 的发明者 Douglas Crockford 编写的 JSON 的参考实现。该库将提供 的实现。JSON.parse()JSON.parse()

在处理非常大的 JSON 文件时,可能会因其同步特性和设计而窒息。为了解决这个问题,JSON 网站推荐使用第三方库,如双簧管.js单簧管,它们提供流式 JSON 解析。JSON.parse()

jQuery曾经有一个$.parseJSON()函数,但它在jQuery 3.0中被弃用了。无论如何,在很长一段时间内,它只不过是包装 。JSON.parse()


答案 2

警告!

这个答案源于一个古老的JavaScript编程时代,在此期间没有内置的方法来解析JSON。这里给出的建议不再适用,可能是危险的。从现代的角度来看,通过涉及jQuery或调用eval()来解析JSON是无稽之谈。除非你需要支持IE 7或Firefox 3.0,否则解析JSON的正确方法是JSON.parse()。

首先,您必须确保JSON代码有效。

在那之后,如果可以的话,我建议使用JavaScript库,如jQuery或Prototype,因为这些事情在这些库中处理得很好。

另一方面,如果您不想使用库,并且可以保证JSON对象的有效性,我会简单地将字符串包装在匿名函数中并使用eval函数。

如果您从另一个不完全受信任的源获取 JSON 对象,则不建议这样做,因为如果您愿意,eval 函数允许叛变代码。

下面是使用 eval 函数的示例:

var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);

如果您控制正在使用的浏览器,或者您不担心使用旧版浏览器的人,则始终可以使用 JSON.parse 方法。

这确实是未来的理想解决方案。