2015-07-15 3 views
0

Я работаю над частью webservice моего критического приложения, у меня есть файл json, который действителен, который имеет несколько массивов, я не могу его разобрать, ниже находится файл,Невозможно разобрать несколько json-массивов на Javascript

{ 
    "Account": "xxx", 
    "DeviceList": [ 
     { 
     "Device": "yyy", 
     "Device_desc": "xyz", 
     "EventData": [ 
      { 

       "GPSPoint": "12.92178,74.90599", 
       "GPSPoint_lat": 12.92178, 
       "GPSPoint_lon": 74.90599 


      } 
     ] 
     } 
    ] 
} 

Я попытался с ниже код, но он показывает пустой экран в браузере, пожалуйста, помогите мне решить эту проблему,

<script> 
var xmlhttp = new XMLHttpRequest(); 
var url = "xyz.com";//its my url 

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     myFunction(xmlhttp.responseText); 
    } 
} 
xmlhttp.open("GET", url, true); 
xmlhttp.send(); 

function myFunction(response) { 
    var arr = JSON.parse(response); 
    var text = ""; 

    var i=0; 
for (i = 0; i < arr.DeviceList.EventData.length; i++) { 
    text += arr.DeviceList.EventData.GPSPoint + "<br>"; 
} 

document.getElementById("id01").innerHTML = text; 



} 
</script> 

Используя приведенный выше код, мне нужно, чтобы отобразить только значения GPSPoint, но я не могу решить эту проблему.

Пожалуйста, помогите мне решить.

ответ

1

Вы неправильно обращаетесь к массивам. Даже если массив имеет только один элемент, вам все равно нужно указать индекс для правильной итерации вашего объекта.

попробовать что-то вроде этого:

for (i = 0; i < arr.DeviceList[0].EventData.length; i++) { 
    console.log(arr.DeviceList[0].EventData[i].GPSPoint); 
} 
+0

Привет спасибо за ответ. Тем не менее, у меня такая же ошибка – user3041237

+0

Тогда вы должны, вероятно, console.log ваш 'arr', чтобы увидеть, даже если он прибывает. Также: вы проверили консоль, если есть какие-либо ошибки? – Dodekeract

0

Проблема с

for (i = 0; i < arr.DeviceList.EventData.length; i++) { 
text += arr.DeviceList.EventData.GPSPoint + "<br>"; 

}

является то, что arr.Device массив

Вы можете использовать

for (i = 0; i < arr.DeviceList[0].EventData.length; i++) { 
text += arr.DeviceList[0].EventData[i].GPSPoint + "<br>"; 

}

+0

Такая же ошибка чувак !!! – user3041237

+0

Ваши данные идут? –

+0

Нет, чувак его не придет – user3041237

0

Попробуйте

<script> 
var xmlhttp = new XMLHttpRequest(); 
var url = "xyz.com";//its my url 

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     myFunction(xmlhttp.responseText); 
    } 
} 
xmlhttp.open("GET", url, true); 
xmlhttp.send(); 

function myFunction(response) { 
    var arr = JSON.parse(response); 
    var text = ""; 

    var i=0; 
for (j = 0; i < arr.DeviceList.length; j++) { 
for (i = 0; i < arr.DeviceList[j].EventData.length; i++) { 
    text += arr.DeviceList[j].EventData[i].GPSPoint + "<br>"; 
} 
} 

document.getElementById("id01").innerHTML = text; 



} 
</script> 
0

Проблема заключается в том, потому что массивы не дают должного индекса , чтобы решить эту проблему вы можете использовать индекс 0 для наружного и I для внутреннего, если вы уверены, что всегда будет только один элемент.

лучшего случай, итерация внешнего массива, а

for (var j = 0; i < arr.DeviceList.length; j++) { 
    for (var i = 0; i < arr.DeviceList[j].EventData.length; i++) { 
     text += arr.DeviceList[j].EventData[i].GPSPoint + "<br>"; 
    } 
}