引用JSON(Javascript)对象的元素

时间:2010-01-15 21:28:39

标签: javascript json arrays element

如何引用JSON(Javascript)对象的元素。 示例:alert(homes.Agents [1] .name);

<script>
    var homes = [
 {
    "Agents" : {
        "name" : "Bob Barker",
        "name" : "Mona Mayflower" 
    },
    "Listings" : [
        {
            "h_id": "3",
            "city": "Dallas",
            "state": "TX",
            "zip": "75201",
            "price": "162500" 
        },
        {
            "h_id": "4",
            "city": "Bevery Hills",
            "state": "CA",
            "zip": "90210",
            "price": "319250" 
        },
        {
            "h_id": "5",
            "city": "New York",
            "state": "NY",
            "zip": "00010",
            "price": "962500" 
        } 
    ]
}

];

</script> 

6 个答案:

答案 0 :(得分:12)

那里面的JSON不是很好,在代理值的情况下,第二个键会覆盖第一个。

你可能意味着:

 "Agents" : [
     {"name" : "Bob Barker"},
     {"name" : "Mona Mayflower"} 
 ],

然后您将访问第一个代理的名称

homes[0]['Agents'][0]['Name']

同样,要从列表中获取其中一个值,您可以执行以下操作:

homes[0]['Listings'][0]['city']
- or -
homes[0].Listings[0].city

只要有有效的标识符,就可以使用点语法,否则你需要使用数组语法。

作为旁注,我不确定数据的结构,但是你可以消除将整个结构包含在数组中的外层[]。然后,您无需像homes[0]['Listings']那样访问所有内容,而只需homes['Listings']

答案 1 :(得分:6)

您的JSON语法错误。您不能在对象中使用相同的键两次。相反,你需要一个数组:

var homes = {
  "Agents" : [
    { "name" : "Bob Barker" },
    { "name" : "Mona Mayflower" }
  ],
  ...
}

然后您可以像这样访问代理:

homes.Agents[1] // => { "name": "Mona Mayflower" }

// or

homes.Agents[1].name // => "Mona Mayflower"

答案 2 :(得分:3)

Homes是一个数组,因此您的第一个访问者是基于索引的。

舍[0]

代理是一个Object,Object包含两个同名的键。这是禁忌。

如果您自己定义此数据,则应更改

"Agents": {
    "name" : "Bob Barker",
    "name" : "Mona Mayflower"
}

 "Agents": [
        {"name" : "Bob Barker"},
        {"name" : "Mona Mayflower"}
    ]

然后您可以通过

访问相关数据
homes[0].Agents[1].name

答案 3 :(得分:2)

您应该为对象属性指定唯一名称。在您的示例中,第二个名称属性将覆盖第一个,因此homes [0] .Agents.name将始终为“Mona Mayflower”。

一旦你对它进行了排序,我认为你正在寻找这个:

homes[0].Agents.name 

答案 4 :(得分:1)

这是无效的JSON代理只是一个对象,而不是一个数组。如果它像这样重组:

"Agents" : [
  { "name" : "Bob Barker"},
  { "name" : "Mona Mayflower"}]

然后你可以用homes.Agents[1].name来获得'Mona Mayflower'

答案 5 :(得分:0)

取自以下link的示例:

var myJSONObject = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
    ]
};

myJSONObject.bindings[0].method”将返回“newURI