如何引用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>
答案 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
”