2016-07-18 62 views
0

我的問題是,如何讀取使用javascript的json數據的specefic形式,例如,如果我有這個,在我看來很困難,所以你可以幫助我出。如何讀取複雜和嵌套的JSON數據

{ 
    "jQRReponse": [ 
    [ 
     { 
     "sujet": "RHONE ALPES", 
     "verbe": "est_le_nom_de_la_region", 
     "complement": { 
      "sujet": "82", 
      "verbe": "est_la_region_du_dept", 
      "complement": { 
      "sujet": "01", 
      "verbe": "est_le_numero_du_dept", 
      "complement": { 
       "sujet": "Ain", 
       "verbe": "contient_les_resultats_de_depAnn", 
       "complement": { 
       "sujet": "Ain2014", 
       "verbe": "Pop_results_Ens_Total", 
       "complement": "626794" 
       } 
      } 
      } 
     } 
     } 
    ], 
    [ 
     { 
     "sujet": "RHONE-ALPES", 
     "verbe": "est_le_nom_de_la_region", 
     "complement": { 
      "sujet": "82", 
      "verbe": "est_la_region_du_dept", 
      "complement": { 
      "sujet": "01", 
      "verbe": "est_le_numero_du_dept", 
      "complement": { 
       "sujet": "Ain", 
       "verbe": "contient_les_resultats_de_depAnn", 
       "complement": { 
       "sujet": "Ain2014", 
       "verbe": "Pop_results_Ens_Total", 
       "complement": "626794" 
       } 
      } 
      } 
     } 
     } 
    ] 
    ] 
} 

說,如果我有這樣的形式:

data : [{ 
toto:5, 
mama:10 
}, 
{ 
toto:99, 
mama:10 
}, 
{ 
toto:88, 
mama:10 
}] 

我要讀的指數在TOTO值我喜歡這樣的: data[i].toto

那麼我該怎麼做第一個。

謝謝

+0

形式? – brk

+0

實際上,我希望能夠讀取所有可以稍後使用它們的值 –

+0

@YahyaAlami首先將JavaScript中的數據解析爲json對象,然後可以在這裏將數據可視化爲http://www.jsoneditoronline.org/,然後使用obj.jQRReponse [1] .sujet等,只是一個提示 –

回答

1

你可以遍歷所有數據,並得到ressult的。

訪問是在像

data.jQRReponse[0][0].complement.complement.sujet 
// returns "01" 

function read(o) { 
 
    Object.keys(o).forEach(function (k) { 
 
     if (o[k] !== null && typeof o[k] === 'object') { 
 
      console.log(k + ' -->'); 
 
      read(o[k]); 
 
      return; 
 
     } 
 
     console.log(k + ': ' + o[k]); 
 
    }); 
 
} 
 

 
var data = { "jQRReponse": [[{ "sujet": "RHONE ALPES", "verbe": "est_le_nom_de_la_region", "complement": { "sujet": "82", "verbe": "est_la_region_du_dept", "complement": { "sujet": "01", "verbe": "est_le_numero_du_dept", "complement": { "sujet": "Ain", "verbe": "contient_les_resultats_de_depAnn", "complement": { "sujet": "Ain2014", "verbe": "Pop_results_Ens_Total", "complement": "626794" } } } } }], [{ "sujet": "RHONE-ALPES", "verbe": "est_le_nom_de_la_region", "complement": { "sujet": "82", "verbe": "est_la_region_du_dept", "complement": { "sujet": "01", "verbe": "est_le_numero_du_dept", "complement": { "sujet": "Ain", "verbe": "contient_les_resultats_de_depAnn", "complement": { "sujet": "Ain2014", "verbe": "Pop_results_Ens_Total", "complement": "626794" } } } } }]] }; 
 

 
read(data, []);

你想讀鍵值
+0

duude你從哪裏得到了這個大腦。謝謝 –

1

,如果你知道的元素,深度和關鍵你可以訪問此嵌套的JSON對象的特定部分。

說,如果你的元素是0,深度爲2,關鍵是verbe,那麼你可以這樣做:

nestedObj[0].complement.complement.complement.verbe 

如果你的要求是要遍歷整個對象,找到你需要的東西,你可以爲每個元素使用遞歸函數。

function traverse_it(obj){ 

    for(var prop in obj){ 

     console.log(obj[prop]);   //Or whatever you want to do with this level 

     if(typeof obj[prop]=='object'){ 
      traverse_it(obj[prop[i]]);  //Function goes to the next level here 

     } 
    } 
} 

traverse_it(nestedObj); 

Here是很多有識之士

+0

不是不正確的,它一定是這個nestedObj [i] [0],但是我感謝你的回答 –

+0

我的回答只考慮了obj部分。不是包含它的衆多數組。 –

+0

哦,好的!在這種情況下,我沒有問題,謝謝 –