2016-03-25 12 views
-2

'da JSON verileri için ayrıştırma JSON verilerini döndüren bir hizmete bir API çağrısı yaptım. Verileri kullanarak günlüğe kaydedersem: JSON.parse (response.body);javascript

Bu günlüğe alır:

{ 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 } ] } 

Sonra yaparsanız:

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

totalStatuses

12 doğru sayım içerir.

Şimdi, verilerin her bölümünün arasında dolaşmak ve LastOccurrence değerini incelemek istiyorum. Bu beni öldürüyor. Bunu yapmak için doğru sözdizimi ne olurdu?

cevap

2

Object.keys kullanarak rahatsız etmeyin, yalnızca bir nesnenin anahtarlarını almak istiyorsanız. Orada sahip olduğunuz şey bir dizi. Bununla, basit bir for döngüsünü kullanarak bunu yineleyebilirsiniz.

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

Mükemmel Mike! Bir takip. Date.parse() öğesini çağırıp result.LastOccurrence değerini milisaniye olarak döndürmem gerekiyor. Denedim: var last_time = Date.parse (sonuç.LastOccurrence); veya sonuna toString() eklenirken, her ikisi de tanımlanmamış bir TypeError komutu verdi. Bunu yapmanın yolu ne olurdu? – Bob

+0

@Bob 'Date.parse' sizin için milisaniyeye dönüştürecektir. Date.parse ('2016-03-25T21: 28: 22Z') === 1458941302000'. Alternatif olarak, bir 'Tarih 'nesnesini oluşturabilir ve daha sonra' getTime'ı kullanabilirsiniz. 'Yeni Tarih (sonuç.Çok Çabuk) .getTime()'. –

0

Bu

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

resp.Results nesneler dizisi olmakla birlikte, Object.keys işlevi bağımsız değişken bir amacı olmasını bekler çalışmak gerekir.
resp.Results dizi yineleme için:

var results = resp.Results, len = resp.Results.length; 
while (len--) { 
    console.log(result[len].LastOccurrence); 
}