我有以下JSON,我使用泛型函数解析并期望返回值。
{
"items":
{
"item":
{
"Beverages":
[
{
"id": "0004",
"name": "Thums Up",
"image":{"url": "images/0001.jpg","width": 200,"height": 200},
"Can":[ "250ml", "300ml","330ml", {"image":"images/0001.jpg" }],
"Bottle":[ "350ml", "600ml", {"image":"images/0001.jpg" } ],
"Fountain":["small", "large", {"image":"images/0001.jpg" }]
},
{
"id": "0005",
"name": "Pepsi",
"image":{"url": "images/0001.jpg","width": 200,"height": 200},
"Can":[ "250ml", "300ml","330ml", {"image":"images/0001.jpg" }],
"Bottle":[ "350ml", "600ml", {"image":"images/0001.jpg" } ],
"Fountain":["small", "large", {"image":"images/0001.jpg" }]
}
],
"Snacks":
[
{
"id": "0010",
"name": "Puffs",
"image":{"url": "images/0001.jpg","width": 200,"height": 200},
"Veg":["Veg puff", {"image":"images/0001.jpg" }],
"Egg":["Egg puff", {"image":"images/0001.jpg" }],
"Chicken":["Chicken puff", {"image":"images/0001.jpg" }]
},
{
"id": "0011",
"name": "Samosa",
"image":{"url": "images/0001.jpg","width": 200,"height": 200},
"Aloo Samosa":["small", "big", {"image":"images/0001.jpg" }],
"Corn Samosa":["small", "big", {"image":"images/0001.jpg" }]
}
]
}
}
}
在我的程序中,我传递了值并期望从中得到一个数组。
这是我的完整计划。我正在使用jQuery。
我这样做:
$(document).ready(function (jsondata) {
var value = 'Beverages';
var retdata[] = returnValues(value);
for (int i = 0; i < retdata.length; i++) {
alert(retdata[i]);
}
});
function returnValues(value) {
var data = [];
$.each(jsondata.items.item, function (i, v) {
if (i == value) {
data.push[i];
}
});
return data;
}
我是一名Java开发人员,所以JS知识非常少 如果这种方式完全错误也请告诉我,以便我可以相应地改变它。
抱歉,如果这是一个毫无疑问的问题,让你感到困惑。我的问题是 我的意思是如果你看到上面的json,如果我直接传递百事可乐价值, 我可以获得图像,Can,Bottle和Fountain值吗? 同样,如果我通过饮料价值,我应该得到饮料的所有儿童元素
答案 0 :(得分:1)
看起来你是用Java编写的,然后尝试更改一些关键字,使其在浏览器中运行。
你遇到的问题:
没有int
.push()
需要()
,而不是[]
,因为这是一个函数调用
Javascript中的变量类型不明确。在变量名后面不需要[]
来定义数组。
答案 1 :(得分:0)
也许这就是你要找的东西:
var obj = $.parseJSON(dataJson);