我有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);
});
}
});
我将这个放在控制台
中行星:[对象对象]
答案 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);
});
});