2015-10-27 2 views
1

Я пытаюсь проанализировать следующий json, полученный из ответа URL. Однако я получаю ошибку с getJSONObject(). Любая помощь в разборе этого json приветствуется.Анализ вложенных json с помощью javascript

{ 
    "results": { 
     "5": { 
      "files": [ 
       "http://localhost:8080/files/31_data_cite.png", 
       "http://localhost:8080/files/32_sesardm.png" 
      ], 
      "details": "TEST1", 
      "type": "request", 
      "date": "2015-10-24 13:02:45.000", 
      "user": "[email protected]" 
     }, 
     "7": { 
      "files": [ 
       "http://localhost:8080/files/31_data_cite.png", 
       "http://localhost:8080/files/32_sesardm.png", 
       "http://localhost:8080/files/30_mds-db.png" 
      ], 
      "details": "TEST2", 
      "type": "userexperience", 
      "date": "2015-10-24 13:07:32.000", 
      "user": "[email protected]" 
     } 
    } 
} 


          
  
if (xhr.readyState == 4) { 
 
    \t \t \t if (xhr.status == 200) { 
 
    \t \t \t \t var arr= JSON.parse(xhr.responseText); 
 
    \t \t \t \t //var str = JSON.stringify(xhr.responseText, null, 2); 
 
        \t //alert(str); 
 
    \t \t \t \t var obj = $.parseJSON(xhr.responseText); 
 

 
for (var key in obj.results) { 
 
\t \t    var values = obj.results[key]; 
 
\t \t    
 
\t \t    for (var v in values) { //v - files, details 
 
\t \t    \t 
 
\t \t    \t if(v=="files") 
 
\t \t    \t { 
 
\t \t    \t \t var files = values.files; 
 
\t \t    \t \t for (i = 0; i < files.length; i++) { 
 
\t \t    \t \t \t document.write(" "+ files[i]); 
 
\t \t    \t \t } 
 
\t \t    \t } 
 
\t \t    \t document.write(" "+values.details+" "+values.type+" "values.user +"<br>"); 
 

 
\t \t    } 
 
\t \t    
 
\t \t   
 
\t \t   } 
 
    }
+0

Не было бы проще просто получить результаты непосредственно из разобранного объекта. 'mainObj = arr.results;' – Blindman67

+0

Да, не будет arr.result OR arr ["results"] вы получите данные, которые вы пытаетесь ввести в свою переменную mainObj? – TomDillinger

+0

Getjsonobject выглядит как функция Java. Если вы хотите, чтобы данные из результатов просто делали arr.results – vbranden

ответ

0
var obj = JSON.parse(xhr.responseText); 
      // var str = JSON.stringify(xhr.responseText, null, 2); 
      for (var key in obj.results) { 
       document.write("Key: " + key + "<br>"); 
       var values = obj.results[key]; 
       if (typeof values === 'object') { 
        for (var i = 0; i < values.files.length; i++){ 
         document.write("FILES: " + values.files[i] 
           + "<br>"); 
        } 
       } 
       document.write("DATA: " + values.details + " " 
         + values.type + " " + values.user + "<br>"); 
      } 
Смежные вопросы