引用JSON(Javascript)对象的元素

mar*_*art 7 javascript arrays json 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> 
Run Code Online (Sandbox Code Playgroud)

Cra*_*ast 12

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

你可能意味着:

 "Agents" : [
     {"name" : "Bob Barker"},
     {"name" : "Mona Mayflower"} 
 ],
Run Code Online (Sandbox Code Playgroud)

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

homes[0]['Agents'][0]['Name']
Run Code Online (Sandbox Code Playgroud)

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

homes[0]['Listings'][0]['city']
- or -
homes[0].Listings[0].city
Run Code Online (Sandbox Code Playgroud)

点语法可以在有效标识符的任何地方使用,否则您需要使用数组语法.

作为旁注,我不确定数据的结构,但是你可以消除将[]整个结构封装在一个数组中的外层.那么你就不需要homes[0]['Listings']简单地访问所有内容了homes['Listings'].


Jor*_*ing 6

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

var homes = {
  "Agents" : [
    { "name" : "Bob Barker" },
    { "name" : "Mona Mayflower" }
  ],
  ...
}
Run Code Online (Sandbox Code Playgroud)

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

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

// or

homes.Agents[1].name // => "Mona Mayflower"
Run Code Online (Sandbox Code Playgroud)


Der*_*ley 2

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

一旦你排序完毕,我想你正在寻找这个:

homes[0].Agents.name 
Run Code Online (Sandbox Code Playgroud)