2013-05-31 61 views
2

這裏是我的JSON數據:JSON - 從json文件讀取嵌套數據?

{ 
    "main": [ 
     { 
      "main_id": "1234", 
      "main_sub": [ 
       { 
        "main_info": { 
         "main_1" : "A", 
         "main_2" : "B", 
         "main_3" : "C" 
        }, 
        "main_4" : "D", 
        "main_5" : "E", 
       }, 
       { 
        "main_6" : "F", 
        "main_7" : "G", 
        "main_info": { 
         "main_1" : "H", 
         "main_2" : "I", 
         "main_3" : "J" 
        }, 
        "main_4" : "D", 
        "main_5" : "E", 
        "main_act": [ 
         { 
          "main_act_1": 12, 
          "main_act_1_1": "C", 
          "main_act_1_2": "T" 
         }, 
         { 
          "main_act_1": 12, 
          "main_act_1_1": "D", 
          "main_act_1_2": "T" 
         } 
        ], 
        "main_8" : "R" 
       }, 
       { 
        "main_4" : "D", 
        "main_5" : "E", 
        "main_10": "P" 
       } 
      ], 
      "main_score": 0.1 
     }, 
     { 
      "main_id": "1334", 
      "main_sub": [ 
       { 
        "main_info": { 
         "main_1" : "B", 
         "main_2" : "Q", 
         "main_3" : "C", 
         "main_11": "D" 
        }, 
        "main_4" : "S", 
        "main_5" : "E", 
        "main_6" : "G", 
        "main_7" : "T" 
       }, 
       { 
        "main_6" : "F", 
        "main_7" : "G", 
        "main_info": { 
         "main_1" : "A", 
         "main_2" : "I", 
         "main_3" : "J" 
        }, 
        "main_10": "W", 
        "main_4" : "D", 
        "main_5" : "E", 
        "main_act": [ 
         { 
          "main_act_1": 112, 
          "main_act_1_1": "C", 
          "main_act_1_2": "T" 
         }, 
         { 
          "main_act_1": 123, 
          "main_act_1_1": "D", 
          "main_act_1_2": "T" 
         } 
        ], 
        "main_8" : "R" 
       }, 
       { 
        "main_4" : "D", 
        "main_5" : "E", 
        "main_10": "P" 
       } 
      ], 
      "main_score": 0.1 
     } 
    ], 
    "main_count": 2 
} 

我不能夠讀取該數據的很大一部分是由於我在jQuery的使用即使$。每個嵌套。

也有一種方法,我可以閱讀此json數據的每一行,並在屏幕上打印它,而不實際提及字段名稱,如我的jQuery代碼中的「main_1」?

產出預期:

我只是想打印的字段名稱以及以及他們對彼此的主要的兩個實例的值。

有點像:

main_id - 1234 
main_sub - 
    main_info - 
    main_1 - A 
    main_2 - B 

等..................(對於主兩個實例 - 在由此main_count = 2 JSON數據的末尾)

+0

你不需要'$ .each'解析此JSON。 – mithunsatheesh

+0

@mithunsatheesh沒問題,我可以通過其中的任何其他方法讀取整個數據? – stark

+0

如果你能告訴我們你期望的輸出是什麼,那會更好。隨着你的嘗試。 – mithunsatheesh

回答

3

純JS的解決方案。這將在控制檯中列出整個對象。

var myVar = {..(your object data here)..}; 

function listing(obj, prefix){ 
    for(var key in obj){ 
     var el = obj[key]; 

     if(el instanceof Object){ 
      listing(el, prefix + ' | ' + key); 
     } 
     else{ 
      console.log(prefix + ' | ' + key + ': ' + el); 
      //document.write(prefix + ' | ' + key + ': ' + el + '<br />'); //alternatively writing to document 
     } 
    } 
} 

listing(myVar, ''); 



預期輸出:

| main | 0 | main_id: 1234 
| main | 0 | main_sub | 0 | main_info | main_1: A 
| main | 0 | main_sub | 0 | main_info | main_2: B 
| main | 0 | main_sub | 0 | main_info | main_3: C 
| main | 0 | main_sub | 0 | main_4: D 
| main | 0 | main_sub | 0 | main_5: E 
| main | 0 | main_sub | 1 | main_6: F 
| main | 0 | main_sub | 1 | main_7: G 

等..

+0

我試過這個,但它似乎沒有工作,沒有數據顯示時,我改變了console.log而不是在主體的屏幕上打印 – stark

+0

如果你想寫它到文檔使用'文檔。寫(前綴+'|'+鍵+':'+ el +'
');'。你確定你的數據已經被解析爲對象了嗎?這可能是字符串。 – Michael

+0

是的,這工作,謝謝很多人! – stark

1

此代碼,可以幫助全給你

 success: function(data) 
      { 
       if(data) 
        { 

         var json = $.parseJSON(data); 
         $(json).each(function(i,val) 
         { 
          //your code 
          $(val).each(function(index,val) 
          { 
            //your code 
          }); 



         }); 
       } 
      } 
+0

我很熟悉這個從文件中提取json數據的結構,但是我面臨的一個問題是代碼將進入$ .each嵌套函數,以便遍歷整個數據? – stark

+0

你知道遞歸函數。 試試吧。 –

0

如果JSON是一種請求的結果,電話jQuery的應該指望JSON,作爲一個答案,以及使用結果如同一個普通的JavaScript對象:

$.ajax({ 
    url: 'my/url', 
    dataType: 'json', 
    success: function(data) { // 'data' will be an object, not a string 
     data.main[0].main_sub[1].main_6; //should be "F" 
    } 
}); 

如果你的JSON數據存儲在一個字符串,用jQuery.parseJSON把它變成一個對象:

var data = jQuery.parseJSON(jsonString); 
data.main[0].main_sub[1].main_6; //should be "F" 
+0

但以這種格式,我不會被要求硬編碼每一行數據才能在屏幕上打印嗎? – stark

+0

data.main [0] .main_sub [1] .main_6; 這不起作用,當我提醒它時,它說它是未定義的。 – stark