2016-07-28 161 views
4

我有2個外部json文件,我必須使用鍵和值從這些文件中讀取數據。我的應用程序不依賴於obj.name等請幫我打印這些值。打印鍵和json對象的值

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); 
        }); 
       } 

      }); 

和我得到了這一點,把控制檯

行星:[目標對象]

回答

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); 
    }); 
}) 

UPDATE 3:如果已嵌套陣列具有多個對象,然後使用一個額外的Array#forEach方法來迭代它。

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

UPDATE 3:如果JSON由具有嵌套多個數組元素的多個屬性做的上述方法的組合。

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

如果我改變我的文件名行星到機場然後我必須修改所有的東西 –

+0

如果你迭代你的頂級對象(json),你可以得到鑰匙:行星,機場等。 –

+0

@SaqibSaqib:更新 –

0

您可以使用雙每個以便其上的名稱不依賴 「機場」

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