обратитесь к элементу JSON (JavaScript) объект

Как я обращаюсь к элементу 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> 
7
задан mart 15 January 2010 в 21:28
поделиться

6 ответов

Вы должны предоставить свой объект свойств уникальных имен. В вашем примере свойство второго наименований перезаписывается первым, так что дома [0] .agents.name всегда будет «мона Mayflower».

Как только вы получите это отсортированные, я думаю, вы ищете это:

homes[0].Agents.name 
2
ответ дан 6 December 2019 в 07:26
поделиться

Это не совсем очень хорошо, 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] [«списки»] и вместо этого просто дома [«списки»] .

12
ответ дан 6 December 2019 в 07:26
поделиться

Дома - это массив, поэтому ваш первый доступ к индексу основан на основе индекса.

Homes [0]

Агенты - это объект, а объект, содержащий две клавиши того же имени. Это нет-нет.

Если вы определяете эти данные сами, вы должны изменить

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

на

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

, то вы можете получить доступ к данным под вопросом по

homes[0].Agents[1].name
3
ответ дан 6 December 2019 в 07:26
поделиться

Это неверные агенты JSON - это просто объект, а не массив. Если бы это было реструктурировано так:

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

, тогда вы можете использовать Homes. Agents [1] .Name , чтобы получить «мона Mayflower»

1
ответ дан 6 December 2019 в 07:26
поделиться

Ваш синтаксис JSON неправильный. Вы не можете иметь один и тот же ключ дважды в объекте. Вместо этого вам нужен массив:

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

Тогда вы можете получить доступ к агентам так:

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

// or

homes.Agents[1].name // => "Mona Mayflower"
6
ответ дан 6 December 2019 в 07:26
поделиться

Пример, взятый из следующей 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"

.
0
ответ дан 6 December 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: