3

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

{
    "category": "true"
}

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


从评论...

JSON 数据基于表单提交从服务器返回。它一直说 myObject 未定义。我怎样才能通过它以便我的 JavaScript 可以读取响应?

从评论...

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

4

5 回答 5

5

您需要先解析 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 解析器。

于 2012-06-27T16:38:09.060 回答
2

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

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

然后你能说例如:

alert(obj.category);
于 2012-06-27T16:23:19.293 回答
1
var myObject = { "category": "true"};

alert (myObject.category);

但你可能想要:

var myObject = { "category": true};

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

if (myObject.category) {
    // category is true, so do your stuff here.
}
于 2012-06-27T16:24:08.420 回答
0

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

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

这是演示

于 2012-06-27T16:29:28.660 回答
0

对于任何撞到墙上的人,请确保查看您是否需要访问包含所有交付数据的父对象:

console.log(response['id'])

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

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

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

于 2019-11-12T17:05:03.477 回答