如何从 JSON 响应中获取数据?

Zoo*_*der 4 javascript ajax json response

我在我的项目中使用纯 JavaScript。如何获取以下示例的类别值?我需要检测它返回的是真还是假。

{
    "category": "true"
}
Run Code Online (Sandbox Code Playgroud)

我可以获得整个对象,但我只想提取类别的值。


来自评论...

JSON 数据是根据表单提交从服务器返回的。它一直说 myObject 未定义。我如何传递这个以便我的 JavaScript 可以读取响应?

来自评论...

我可以使用 this: 获取 myObject if (form.XHR.status === 200) {var data = form.XHR.response;},但如果我尝试data.myObject这样做,就会显示它未定义。

小智 5

您需要先解析 JSON,然后才能将其作为对象访问......

if (form.XHR.status === 200) {
    var data = form.XHR.response;

    var parsed = JSON.parse(data);

    alert(parsed.category);
}
Run Code Online (Sandbox Code Playgroud)

为什么需要这个?这是因为JSON 不是 JavaScript。这两个术语不是同义词。

JSON 是一种文本数据交换格式。它需要被解析任何语言的数据结构。在您的例子中,语言是 JavaScript,因此您需要将其解析为 JavaScript 数据。

当从 xhr 响应接收到它时,它是以 JavaScript 处理所有文本数据的形式接收的。那就是作为一个string. 作为字符串,您无法直接访问所表示的值。

JavaScript 有一个内置的解析器,称为JSON.parse. 这在上面的示例中用于进行必要的转换。

一些较旧的浏览器不支持JSON.parse. 如果您支持这些浏览器,则可以在http://json.org找到 JavaScript 解析器。