如何从 JSON 响应获取数据

How to get data from JSON response?

本文关键字:获取 数据 响应 JSON      更新时间:2023-09-26

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

{
    "category": "true"
}

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


从评论...

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.
}

您可以使用 '." 或 [key] 访问 json 对象数据,如下所示:

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

这是演示

对于任何来到这里的人,他们的头撞在墙上,一定要看看你是否需要访问一个包装所有交付数据的父对象:

console.log(response['id'])

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

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

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