Как я обращаюсь к элементу JSON (JavaScript) объект. exampe: предупреждение (дома. Агенты [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] .agents.name всегда будет «мона Mayflower».
Как только вы получите это отсортированные, я думаю, вы ищете это:
homes[0].Agents.name
Это не совсем очень хорошо, JSON выше, в случае значения агентов второй ключ переопределят первый.
Вы, вероятно, имели в виду:
"Agents" : [
{"name" : "Bob Barker"},
{"name" : "Mona Mayflower"}
],
Тогда вы можете получить доступ к имени первого агента как
homes[0]['Agents'][0]['Name']
аналогично, чтобы получить одно из значений из списков, вы сделаете что-то с похожим на:
homes[0]['Listings'][0]['city']
- or -
homes[0].Listings[0].city
Синтаксис точечного момента Использовать везде, где есть действительный идентификатор, иначе вам нужно использовать синтаксис массива.
Как побочная записка, я не уверен, что структура данных, но возможно, что вы можете устранить внешний уровень []
, который охватывает всю вашу структуру в массиве. Тогда вам не нужно будет получать доступ к домам [0] [«списки»]
и вместо этого просто дома [«списки»]
.
Дома - это массив, поэтому ваш первый доступ к индексу основан на основе индекса.
Homes [0]
Агенты - это объект, а объект, содержащий две клавиши того же имени. Это нет-нет.
Если вы определяете эти данные сами, вы должны изменить
"Agents": {
"name" : "Bob Barker",
"name" : "Mona Mayflower"
}
на
"Agents": [
{"name" : "Bob Barker"},
{"name" : "Mona Mayflower"}
]
, то вы можете получить доступ к данным под вопросом по
homes[0].Agents[1].name
Это неверные агенты JSON - это просто объект, а не массив. Если бы это было реструктурировано так:
"Agents" : [
{ "name" : "Bob Barker"},
{ "name" : "Mona Mayflower"}]
, тогда вы можете использовать Homes. Agents [1] .Name
, чтобы получить «мона Mayflower»
Ваш синтаксис JSON неправильный. Вы не можете иметь один и тот же ключ дважды в объекте. Вместо этого вам нужен массив:
var homes = {
"Agents" : [
{ "name" : "Bob Barker" },
{ "name" : "Mona Mayflower" }
],
...
}
Тогда вы можете получить доступ к агентам так:
homes.Agents[1] // => { "name": "Mona Mayflower" }
// or
homes.Agents[1].name // => "Mona Mayflower"
Пример, взятый из следующей 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
"