Jquery遍历Json对象

时间:2013-04-29 21:01:11

标签: javascript jquery json

Json Code

{
 "pizza":
 {
   "pepperoni lovers":
   {
      "topping": "pepperoni",
      "crust": "hand tossed"
   },

   "sausage lovers":
   {
      "topping": "sausage",
      "crust": "hand tossed"
   }
 }

}

我怎样才能遍历这个并用一个名字填充一个数组?

4 个答案:

答案 0 :(得分:3)

一系列属性名称?使用this

var names = Object.keys(data.pizza);

答案 1 :(得分:1)

迭代对象的经典方法是使用for .. in循环。

for (prop in obj) {
    val = obj[prop];
}

此技术的一个可能的副作用是,您无法保证以任何特定顺序迭代属性。如果您提前知道属性名称,则可以创建一个属性名称数组并进行迭代。

由于你的对象是嵌套的,你需要嵌套两个for .. in循环来彻底迭代:

for (prop in obj) {
    nested_obj = obj[prop];

    for (nested_prop in nested_obj) {
        nested_val = nested_obj[nested_prop];
    }
}

要获取所有属性名称的数组,可以像这样构建数组:

props = [];

for (prop in obj) {
    props.push(prop);
    nested_obj = obj[prop];

    for (nested_prop in nested_obj) {
        props.push(nested_prop);
        nested_val = nested_obj[nested_prop];
    }
}

答案 2 :(得分:1)

您可以使用for ... in:

循环遍历对象属性
a = [];
for (n in pizza) {
    a.push(n);
}

答案 3 :(得分:0)

jQuery,假设一个正确的对象

DEMO

var pizzaNames=[],
    data = { "pizza" : {
      "pepperoni lovers":
    {
       "topping": "pepperoni",
       "crust": "hand tossed"
    },
      "sausage lovers":
      {
       "topping": "sausage",
       "crust": "hand tossed"
      }
   }
}
// $.each is IE8 compatible, Object.keys is not
$.each(data.pizza,function(name,val) {
   pizzaNames.push(name);
});