jQuery - извлечение данных из JSON - PullRequest
1 голос
/ 08 декабря 2010

У меня есть следующий фид JSON:

{"mouldings":[{"moulding_id_2":{"cost":"3.1","width":45}},{"moulding_id_4":{"cost":"1.5","width":30}},{"moulding_id_6":{"cost":"2.1","width":50}}],"material_costs":[{"mountboard":{"cost":"0.00000246494303242769"}},{"glass":{"cost":"0.0000032426589803639"}},{"backing_board":{"cost":"0.00000135110790848496"}}],"app_options":[{"vat":{"value":"17.5"}},{"wastage":{"value":"20"}},{"markup":{"value":"3"}}]}

Я пытаюсь извлечь стоимость конкретного лепного украшения, используя jQuery .getJSON Мой код jQuery выглядит следующим образом:

$.getJSON( '/calculate_quote/2,6,4.json', function (data) {
  alert(data.mouldings.moulding_id_2.cost);
});

При этом я получаю следующую ошибку:

Uncaught TypeError: Cannot read property 'cost' of undefined

Почему я получаю эту ошибку, большое спасибо.

Ответы [ 2 ]

5 голосов
/ 08 декабря 2010

Ваше свойство "Mouldings" объекта JSON является массивом объектов. Поэтому, как бы вы это ни называли, это так:

alert(data.mouldings[0].moulding_id_2.cost);

Если вы не хотите, чтобы это форматировалось таким образом, вам придется изменить способ форматирования JSON на сервере.

Чтобы уточнить еще, у вас есть следующее:

{ "молдинги": [ { "moulding_id_2": { "стоимость": "3.1", "ширина": 45}} ]

Если вы хотите получить доступ к свойству стоимости вашего moulding_id_2, например:

data.mouldings.moulding_id_2.cost

... вам нужно создать JSON следующим образом:

{ "молдинги": { "moulding_id_2": { "стоимость": "3.1", "ширина": 45}}

1 голос
/ 08 декабря 2010

это должно сделать

data.mouldings[0].moulding_id_2.cost
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...