使用Javascript引用JSON对象

时间:2015-02-12 10:15:04

标签: javascript arrays json dom

我已经看过类似的帖子,但我无法正确使用这段代码。

var obj2 = JSON.parse('{"venue_data": 
           {"venue_id":"25",
           "description":"Space Cafe",
          "venue_type": [
           {"type_description":"Cafe"},
           {"type_description":"Free Wifi"},
           {"type_description":"Hangout"}
                       ]
                  }
                        }
           ');

//next line doesn't work :(                         
alert(obj2.venue_data[0].venue_id);
//either do the next two :(                         
alert(obj2.venue_data[0].venue_type[0]);
                         }
alert(obj2.venue_data[0].venue_type[1]);

我尝试了不同的东西,但现在我只是在猜测。

ps ...没有数据中的数组,它可以正常工作。

欢迎任何帮助。

谢谢,

奈德

4 个答案:

答案 0 :(得分:5)

venue_data是一个对象,而不是一个数组。您无法使用[0]选择器引用它。

相反,只需使用文字:

alert(obj2.venue_data.venue_id);

答案 1 :(得分:1)

是的,因为venue_data不是array,它只是一个对象。

console.log(obj2.venue_data.venue_id);

一样访问它

相反,如果它本来是

var obj2 = JSON.parse('{"venue_data": ' + 
                            '[{"venue_id":"25",' +
                            '"description":"Space Cafe",' +
                            '"venue_type": [' +
                                            '{"type_description":"Cafe"},' +
                                            '{"type_description":"Free Wifi"},' +
                                            '{"type_description":"Hangout"}' +
                                          ']' +
                            '}]' +
                        '}');

然后您应该在[0]

之后使用venue_data

答案 2 :(得分:1)

您的代码中似乎存在一些类型错误,

alert(obj2.venue_data[0].venue_id);

无效,因为

obj2.venue_data 

不是数组。

你走了:

var obj2 = 
{
    "venue_data":
    {
        "venue_id": "25",
        "description": "Space Cafe",
        "venue_type": [
            { "type_description": "Cafe" },
            { "type_description": "Free Wifi" },
            { "type_description": "Hangout" }
        ]
    }
};

alert(obj2.venue_data.venue_id);                 
alert(obj2.venue_data.venue_type[0]);
alert(obj2.venue_data.venue_type[1]);



var obj2witharray = {
    "venue_data":[
     {
        "venue_id": "25",
        "description": "Space Cafe",
        "venue_type": [
            { "type_description": "Cafe" },
            { "type_description": "Free Wifi" },
            { "type_description": "Hangout" }
        ]
     },{
        "venue_id": "26",
        "description": "Universe Cafe",
        "venue_type": [
            { "type_description": "Cafe" },
            { "type_description": "Free Wifi" },
            { "type_description": "Hangout" }
        ]
     }, {
         "venue_id": "27",
         "description": "Earth Cafe",
         "venue_type": [
             { "type_description": "Cafe" },
             { "type_description": "Free Wifi" },
             { "type_description": "Hangout" }
         ]
     }
   ]
}

答案 3 :(得分:0)

非常感谢Guys两个答案。 我的脚本有两个问题: 1.场地数据没有正确定义,我应该[括号如此显示场地阵列。 2.我没有在单个字符串中创建json对象,并且应该连接字符串。

再次感谢很多。 奈德