从内部级别获取JSON对象的键

时间:2015-01-02 11:42:10

标签: javascript jquery

我在获取内部对象级别的键值时遇到问题。

这是示例对象

{  
"dataset":{  
  "Categories":[  
     {  
        "Desserts":[  
           "Sweets",
           "Ice Creams",
           "Pastry",
           "Moose",
           "Jelly",
           "Donut",
           "Custard",
           "Puddings",
           "Cookies",
           "Pies"
        ]
     },
     {  
        "Juices and Beverages":[  
           "Cold",
           "Hot",
           "Fresh",
           "Mocktail",
           "Sodas"
        ]
     },
     {  
        "Indian Breads":[  
           "Plain",
           "Stuffed"
        ]
     },
     {  
        "Salads":[  
           "Green",
           "Vegetable",
           "Fruit"
        ]
     },
     {  
        "Soups":[  
           "Clear",
           "Thick"
        ]
     }
  ]
  }
 }

我尝试通过外层的对象进行交互。

for(var k in dataset.Categories)
    categories.push(k);

但我得到的结果为0,1,2,3,4。

如何在内部获得关键值?喜欢" Desserts"," Juices and Beverages",....

2 个答案:

答案 0 :(得分:1)

Categories是一个数组,因此如果你使用for..in,你将得到的值是数组索引。

要获得所需的值,您可以使用:

var categoryNames = dataset.Categories.map(function (item) {
    return Object.keys(item)[0];
});

example

答案 1 :(得分:0)

您正在插入索引而不是值。代码未经测试但应该有效。

for(var k in dataset.Categories)
categories.push(dataset.Categories[k]);