jQuery - 从JSON中提取数据

时间:2010-12-07 23:45:22

标签: javascript jquery json

我有以下JSON Feed:

{"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 个答案:

答案 0 :(得分:5)

JSON对象的“moldings”属性是一个对象数组。因此,你打电话的方式是这样的:

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 :(得分:1)

这应该做

data.mouldings[0].moulding_id_2.cost