繁体   English   中英

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

[英]How to get data from JSON response?

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

{
    "category": "true"
}

我可以得到整个对象,但我只想拉出category的值。


从评论...

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

从评论...

我可以使用这个获取 myObject: if (form.XHR.status === 200) {var data = form.XHR.response;} ,但如果我尝试做data.myObject它说它是未定义的。

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

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

    var parsed = JSON.parse(data);

    alert(parsed.category);
}

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

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

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

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

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

首先,您需要一个变量来引用它:

var obj = {
    "category": "true"
};

然后你可以说例如:

alert(obj.category);
var myObject = { "category": "true"};

alert (myObject.category);

但你可能想要:

var myObject = { "category": true};

...如果你要测试真/假:

if (myObject.category) {
    // category is true, so do your stuff here.
}

您可以使用 '.' 访问 json 对象数据。 或 [key] 像这样:

var obj = {
    "category": "true"
};
console.log(obj.category);   
// Or
console.log(obj["category"]);

这是演示

对于到达这里的任何人,头撞墙,请确保查看您是否需要访问包装所有传递数据的父对象:

console.log(response['id'])

可能不起作用,因为必须首先访问父实体:

console.log(response.session['id'])

如果您控制台记录您的响应并且它包含在{}您可能需要执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM