我有这样的JSON格式
{
"items": {
"item": {
"Beverages": [
{
"id": "0001",
"name": "Coke",
"image": {
"url": "json_images/coke.jpg",
"width": 200,
"height": 200
},
"category": [
{
"category_name": "Cokecan",
"image": "json_images/coke_can.jpg",
"type": [
{
"id": "p1",
"type": "250ml",
"price": "50"
},
{
"id": "p2",
"type": "300ml",
"price": "60"
}
]
}
]
},
{
"id": "0005",
"name": "Pepsi",
"image": {
"url": "json_images/pepsi.jpg",
"width": 200,
"height": 200
},
"category": [
{
"category_name": "Pepsican",
"image": "json_images/pepsi_can.jpg",
"type": [
{
"id": "p4",
"type": "250ml",
"price": "50"
}
]
}
]
}
]
}
}
}
我的问题是,如果我从上面的JSON中选择Beverages然后选择Coke,我会按照以下方式获取值250ml和300Ml
无论如何,我能以更高效的方式做到这一点。
//返回第一级的功能
function returnfirstlevelValues(value) {
var data;
$.each(jsondata.items.item, function(i, v) {
if (i == value) {
data = v;
}
});
return data;
}
//返回第二级的功能
function returnSecondlevelValues(value) {
var innerdata = [];
for (var i = 0; i < retdata.length; i++) {
if (retdata[i].name == value) {
for (var b = 0; b < retdata[i].category.length; b++) {
innerdata.push(retdata[i].category[b].category_name);
}
}
}
return innerdata;
}
//返回第三级的功能
function returnThirdlevelValues(value) {
var objArray = [];
$.each(retdata, function(i, item) {
$.each(item.category, function(j, item) {
if (item.category_name == value) {
obj.image = item.image;
obj.type = [];
obj.price = [];
obj.id = [];
$.each(item.type, function(k, e) {
obj.type.push(e.type);
obj.price.push(e.price);
obj.id.push(e.id);
});
objArray.push(obj);
}
});
});
return objArray;
}
这是我的jsfiddle http://jsfiddle.net/f5T9d/
答案 0 :(得分:1)
处理JSON
这是我写它的方式,它的旧javascript&amp;使用高性能的短角。
function first(value){
return jsondata.items.item[value]||false
}
function second(value){
var l=firstReturn.length,temp;
while(l--){
firstReturn[l].name!=value||(temp=firstReturn[l].category)
};
return temp||false
}
function third(value){
var l=secondReturn.length,temp;
while(l--){
secondReturn[l]['category_name']!=value||(temp=secondReturn[l].type)
};
return temp||false
}
<强>样本强>
如果输出不符合您的预期,请告诉我并进行一些修改......
如果您有任何问题,请询问。
答案 1 :(得分:0)
您可以使用JQuery中的parseJSON,以便将数据视为对象