打印json对象的键和值

时间:2016-07-28 19:12:13

标签: jquery json

我有2个外部json文件,我必须使用键和值从这些文件中读取数据。我的应用程序不依赖于obj.name等。请帮我打印这些值。

Planets.json

 {
"Planets": [
  { "name": "Mercury",
    "color": "Orange",
    "distance": "57.91 km",
    "radius": "2340 km",
    "year": "0.24085 Earth",
    "day": "88 days",
    "mass": "0.054 Earth"
  },

  { "name": "second",
    "color": "Orange",
    "distance": "57.91 km",
    "radius": "2340 km",
    "year": "0.24085 Earth",
    "day": "88 days",
    "mass": "0.054 Earth"
  }

}

Airports.json

    {
"Airports": [
  {
    "listing": "East 34th Street Heliport",
    "iata": "TSS",
    "type": "Heliport",
    "size": "Tiny"
  }

}

这是我正在尝试的代码。

              $.ajax({
                url:"planets.json",
                dataType: "json",
                success:function(json){
                    $.each(json, function(key, value){
                        console.log(key + ": " + value);
                    });
                }

            });

我将这个放在控制台

行星:[对象对象]

3 个答案:

答案 0 :(得分:4)

使用json.Planets[0]获取嵌套对象并迭代它。

$.each(json.Planets[0], function(key, value){
    console.log(key + ": " + value);
});

更新1:如果对象只包含一个属性,那么您可以使用 Object.keys() 获取该属性,并执行与上一个示例相同的操作。

$.each(json[Object.keys(json)[0]][0], function(key, value){
    console.log(key + ": " + value);
});

<小时/> 更新2: 如果有多个属性,则使用 $.each() 方法两次。

$.each(json,function(k, v){
    $.each(v[0], function(key, value){
        console.log(key + ": " + value);
    });
})

更新3 :如果您有多个对象的嵌套数组,请使用其他 Array#forEach 方法进行迭代。

json[Object.keys(json)[0]].forEach(function(v){
    $.each(v, function(key, value){
        console.log(key + ": " + value);
    });
});

更新3:如果您的JSON包含多个具有嵌套多个数组元素的属性,请执行上述方法的组合。

$.each(json,function(k, v){
    v.forEach(function(v1){  
        $.each(v1, function(key, value){
            console.log(key + ": " + value);
        });
    });
})

答案 1 :(得分:1)

要达到预期效果,请使用以下选项

$.each(json, function(key, value) {
  $.each(value[0], function(k, val) {
    console.log(k + ":" + val);
  });
});

Codepen- http://codepen.io/nagasai/pen/GqGVGd

答案 2 :(得分:0)

您可以使用双倍,以便它不依赖于名称“机场”

$.each(json, function(objectTitle, objects){
    console.log('List of ' + objectTitle + ':');
    $.each(objects, function(objectKey, objectValue){
        console.log(objectKey + ':' +  objectValue);
    });
});