在JSON对象中访问Child

时间:2016-08-23 00:17:45

标签: javascript json

我有一个JSON

{
   "destination_addresses" : [ "14 Mission St, San Francisco, CA 94105, USA" ],
   "origin_addresses" : [ "23 Mission St, San Francisco, CA 94103, USA" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "1.3 mi",
                  "value" : 2060
               },
               "duration" : {
                  "text" : "7 mins",
                  "value" : 444
               },
               "duration_in_traffic" : {
                  "text" : "6 mins",
                  "value" : 344
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

我一直在尝试访问duration_in_traffic的“text”值并将该值存储到变量中。由于某种原因,我得到的值是未定义的。

var hold = JSON.parse(body.rows.elements.duration.text);

为什么我不能像这样接触孩子?

3 个答案:

答案 0 :(得分:1)

您有嵌套数组,因此您需要通过索引访问数组中的元素。

var hold = body.rows[0].elements[0].duration_in_traffic.text;

答案 1 :(得分:0)

首先你需要解析JSON字符串(如果它是一个字符串)然后你可以访问它...假设body是包含字符串的var,你会做

var hold = JSON.parse(body).rows[0].elements[0].duration.text;

var obj = JSON.parse(body);
var hold = obj.rows[0].elements[0].duration.text;

答案 2 :(得分:0)

JSON.parse不解析json字符串的一部分。例如,如果你的json字符串存储在body中,你需要先解析它:

var jsonObj  = JSON.parse(body);

这将为您提供一个javascript对象,然后您可以像尝试一样访问该对象的属性。

var hold = body.rows[0].elements[0].distance.text; //similar to @js91

希望有所帮助!