在这种情况下,是否可以减少读取JSON值的函数?



我用这种方式得到了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中选择饮料,然后选择可乐,我正在做以下的方式来获得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/

处理JSON

这就是我写它的方式,它是旧的javascript &使用高效的简写。

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
}

http://jsfiddle.net/43MV2/

如果输出不是您期望的,请告诉我,我做一些修改…

您可以使用JQuery中的parseJSON,这样您就可以将数据视为对象

最新更新