2016-03-25 5 views
-2

Я сделал вызов API для службы, которая возвращает данные JSON. Если я регистрирую данные, используя: JSON.parse (response.body);Анализ данных JSON в javascript

Это получает вход:

{ Results: 
    [ { Interval: 900, 
     IsNodeActive: true, 
     LastOccurrence: '2016-03-25T21:28:22Z', 
     MonitorType: 0, 
     NodeName: 'fmsHealthMonitorAppId01', 
     Status: 0 }, 
    { Interval: 900, 
     IsNodeActive: true, 
     LastOccurrence: '2016-03-25T21:30:15Z', 
     MonitorType: 1, 
     NodeName: 'fmsHealthMonitorAppId01', 
     Status: 0 }, 
    { Interval: 900, 
     IsNodeActive: true, 
     LastOccurrence: '2016-03-25T21:30:15Z', 
     MonitorType: 2, 
     NodeName: 'fmsHealthMonitorAppId01', 
     Status: 0 }, 
    { Interval: 900, 
     IsNodeActive: true, 
     LastOccurrence: '2016-03-25T21:28:49Z', 
     MonitorType: 0, 
     NodeName: 'fmsHealthMonitorAppId02', 
     Status: 0 }, 
    { Interval: 900, 
     IsNodeActive: true, 
     LastOccurrence: '2016-03-25T21:35:23Z', 
     MonitorType: 1, 
     NodeName: 'fmsHealthMonitorAppId02', 
     Status: 0 }, 
    { Interval: 900, 
     IsNodeActive: true, 
     LastOccurrence: '2016-03-25T21:35:23Z', 
     MonitorType: 2, 
     NodeName: 'fmsHealthMonitorAppId02', 
     Status: 0 }, 
    { Interval: 900, 
     IsNodeActive: true, 
     LastOccurrence: '2014-11-03T16:20:15Z', 
     MonitorType: 0, 
     NodeName: 'fmsHealthMonitorAppId03', 
     Status: 2 }, 
    { Interval: 900, 
     IsNodeActive: true, 
     LastOccurrence: '2013-08-30T21:44:41Z', 
     MonitorType: 0, 
     NodeName: 'fmsHealthMonitorAppId04', 
     Status: 2 }, 
    { Interval: 900, 
     IsNodeActive: false, 
     LastOccurrence: '2014-11-03T16:34:45Z', 
     MonitorType: 1, 
     NodeName: 'fmsHealthMonitorAppId03', 
     Status: 1 }, 
    { Interval: 900, 
     IsNodeActive: false, 
     LastOccurrence: '2014-11-03T16:34:45Z', 
     MonitorType: 2, 
     NodeName: 'fmsHealthMonitorAppId03', 
     Status: 1 }, 
    { Interval: 900, 
     IsNodeActive: false, 
     LastOccurrence: '2013-08-30T21:57:58Z', 
     MonitorType: 1, 
     NodeName: 'fmsHealthMonitorAppId04', 
     Status: 1 }, 
    { Interval: 900, 
     IsNodeActive: false, 
     LastOccurrence: '2013-08-30T21:57:58Z', 
     MonitorType: 2, 
     NodeName: 'fmsHealthMonitorAppId04', 
     Status: 1 } ] } 

Тогда, если я:

var resp = JSON.parse(response.body); 
var totalStatuses = Object.keys(resp.Results).length; 

totalStatuses содержит 12 правильный подсчет.

Теперь я хочу пройти через каждый раздел данных и изучить значение LastOccurrence. Это ускользает от меня. Каким будет правильный синтаксис?

ответ

2

Не беспокойтесь, используя Object.keys, это только если вы хотите получить ключи от объекта. У вас есть массив. С этим вы можете выполнить итерацию через простой цикл for.

for (var i = 0; i < resp.Results.length; i++) { 
    var result = resp.Results[i]; 
    console.log(result.LastOccurrence); 
} 
+0

Идеальный Майк! Следуйте дальше. Мне нужно превратить result.LastOccurrence в миллисекунды, вызывая Date.parse() на нем. Я попробовал: var last_time = Date.parse (result.LastOccurrence); или добавление toString() в конец, но те, которые дали значение TypeError, не определены, не являются функцией. Каким был бы способ сделать это? – Bob

+0

@Bob 'Date.parse' преобразует его в миллисекунды для вас. 'Date.parse ('2016-03-25T21: 28: 22Z') === 1458941302000'. Кроме того, вы можете создать объект 'Date', а затем использовать' getTime'. 'new Date (result.LastOccurrence) .getTime()'. –

0

Это должно работать

for(var i = 0; i < totalStatuses ; i += 1){ 
    var obj = resp[i]; 
    console.log(obj.LastOccurrence); 
} 
0

resp.Results представляет собой массив объектов, но Object.keys функции ожидает, что ее аргумент является объект.
Для перебора resp.Results массива:

var results = resp.Results, len = resp.Results.length; 
while (len--) { 
    console.log(result[len].LastOccurrence); 
} 
Смежные вопросы