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

时间:2012-06-27 16:20:52

标签: javascript ajax json response

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

{
    "category": "true"
}

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


来自评论......

  

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

来自评论......

  

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

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

然后你可以说例如:

alert(obj.category);

答案 2 :(得分:1)

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

alert (myObject.category);

但你可能想要:

var myObject = { "category": true};

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

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

答案 3 :(得分:0)

您可以使用'。'访问json对象数据。或者[关键]这样:

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

以下是DEMO

答案 4 :(得分:-1)

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

console.log(response['id'])

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

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

如果您在控制台中记录响应,并且该响应包含在{}中,则可能需要这样做。