2012-03-26 9 views
1

Ich habe JSON Text, der wie folgt aussieht:Wie sbt JsonNavigator verwenden

{ 
    "ok": true, 
    "totalPages": 256, 
    "arReports": { 
    "r2807328": { 
     "marchReportId": "2807328", 
     "reportUnixTime": "1332742728", 
     "marchTypeState": "1" 
    }, 
    "r2804256": { 
     "marchReportId": "2804256", 
     "reportUnixTime": "1332722319", 
     "marchType": "4", 
     "marchTypeState": "1" 
    } 
    }, 
    "arOtherNames": { 
    "a455": "JL", 
    "a44": "CCCP", 
    "a796": "Waffenstudenten" 
    } 
} 

ich dann tun:

var objGW = eval('(' + s + ')'); 
var d = new sbt.JsonNavigator(objGW); 

Wie erhalte ich die Liste der Bericht-IDs (r2807328, usw.) und dann die entsprechende marchReportId für jeden?

Ich habe d.stringValues ​​('arReports') und d.stringValues ​​('arReports/marchId') versucht, aber ich bekomme nicht die Werte als Text oder ein Array? Was mache ich falsch?

Antwort

0

Es geht den Validator so dass ich glaube nicht, dass es ungültig json ist. Sie können auf die Eigenschaften von arreports als assoziatives Array zugreifen. Wenn mit json auf dem Clientside arbeiten, können Sie die folgende tun das erste Element mit Schlüssel

d.arReports["r2807328"] 

diese abzurufen werden die arReports Objekt mit dem angegebenen Schlüssel zurück. Wenn Sie eine Eigenschaft verwenden möchten, sollten Sie

d.arReports["r2807328"].marchTypeStatus 

verwenden, wenn Sie es auf der Serverside mit der jsonnavigator Klasse tun möchten, können Sie die folgende Syntax

var d = new sbt.JsonNavigator(json); 
d.stringValues('arReports/r2807328') 

oder

var d = new sbt.JsonNavigator(json); 
d.stringValues('arReports/r2807328/marchTypeStatus') 
verwenden

für weitere Referenz siehe folgenden Link

SBT Demo

0

Ich glaube, Sie die eckigen Klammern fehlen, die Ihr Code macht ein Objekt hier zum Beispiel ->http://www.w3schools.com/json/default.asp

+0

Der obige JSON-Text wird von einer externen Anwendung generiert - ich glaube, es handelt sich um ein mehrdimensionales Array. Ich habe es überprüft, um sicherzustellen, dass es nicht mit [] zurückgegeben wird. – Anil