如何在JSON中访问对象?

时间:2017-01-26 19:23:37

标签: javascript arrays json object

上下文

如果我有以下JSON数据:

{"response":"success","data":[{"id":"2"}]}

我试图获取通过2发送的ID。

尝试

我尝试过以下方法:

var r = JSON.parse('{"response":"success","data":[{"id":"2"}]}');

if(r.response=="success"){
    var usr = r.data;
    console.log(usr.id);
}

以上输出undefined

var r = JSON.parse('{"response":"success","data":[{"id":"2"}]}');

if(r.response=="success"){
    var usr = r.data;
    for(var k in usr){
        if(usr.hasOwnProperty(k)){
            console.log(usr.k);
        }
    }
}

以上输出undefined

var r = JSON.parse('{"response":"success","data":[{"id":"2"}]}');

if(r.response=="success"){
    var usr = r.data;
    var ret = [];
    for(var key in usr){
        ret.push(key);
    }
    console.log(ret);
}

以上输出0

var r = JSON.parse('{"response":"success","data":[{"id":"2"}]}');

if(r.response=="success"){
    var usr = JSON.parse(r.data);
    console.log(usr.id);
}

以上输出错误 - 请记住这是通过Nativescript运行,因此模拟环境(Android模拟器)可能会导致此错误:

chromium: [INFO:library_loader_hooks.cc(120)] Chromium logging enabled: level = 0, default verbosity = 0
01-26 19:20:55.423  4875  4875 I BrowserStartupController: Initializing chromium process, singleProcess=true
chromium: [WARNING:resource_bundle.cc(285)] locale_file_path.empty()
01-26 19:20:55.441  4875  4875 E DataReductionProxySettingListener: No DRP key due to exception:java.lang.ClassNotFoundException: com.android.webview.chromium.Drp
chromium: [WARNING:data_reduction_proxy_config.cc(423)] SPDY proxy OFF at startup

问题

如何使用JavaScript访问以下JSON字符串中id的{​​{1}}属性:

data

5 个答案:

答案 0 :(得分:2)

您可以尝试使用以下代码。您首先需要访问data属性,然后由于data是一个数组,您需要一个索引来访问第一个元素,如data [0] Property,然后id属性可以是由r.data[0].id

检索



var r = JSON.parse('{"response":"success","data":[{"id":"2"}]}');

if(r.response === "success"){
  console.log(r.data[0].id)
  }




答案 1 :(得分:1)

您可以访问console.log(usr[0].id);

答案 2 :(得分:1)

您的数据值是数组而不是对象

首次尝试时,请更新:

console.log(usr.id);

到此:

console.log(usr[0].id);

或者你可以做一个for循环:

if(r.response=="success"){
    var usr = r.data;
    for(i=0; i < usr.length; i++) {
      console.log(usr[i].id);
    }
}

Fiddle

答案 3 :(得分:0)

您的数据对象是一个数组,因此您必须先访问数组的位置:

usr[0]

你得到了id值

usr[0].id

如果要直接使用usr.id访问,则需要将JSON数据对象数组更改为简单对象:

{"response":"success","data":{"id":"2"}}

或做出丑陋的重新签名:

usr = usr[0]

答案 4 :(得分:0)

这是因为您使用了[]只使用{}。如果使用[],那么它是一个数组属性,然后要访问2,应该使用[0] .id。

从[{“id”:“2”}删除[]}