Immer einen einzelnen Wert aus einer JSON-Objekt mit JSONPath
Habe ich folgenden JSON und ich brauche, um die Ebene name
Wert mit JSONPath:
{
"single" : {
"id" : 1,
"name" : "Item name"
}
}
Ausdruck, den ich verwendet ist $.single.name
aber ich bekomme immer ein array:
[ "Item name" ]
anstatt ein string-Wert ("Item name"
).
InformationsquelleAutor Ilija | 2014-05-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
aber ich bekomme immer ein array:
Dass geschehen soll. Wie Sie Lesen können in diese Dokumentation, unter 'Ergebnis' (fast ganz unten):
Also im Grunde, es wird immer ein array zurückgeben. Wenn Sie die Daten eines anderen Typs, z.B. einen String, in diesem Fall müssen Sie, um die Konvertierung selbst, fürchte ich.
Leider Nein. Aber ich überprüfte den Quellcode und es ist nicht sehr kompliziert, vielleicht könnten Sie einige änderungen vornehmen, haben Sie wieder etwas anderes als ein array, wenn Sie es wollen.
Ja, ich endete damit, dass (wenn der Pfad endet mit
~first
wird es wieder erste element des resultierenden Arrays). Hassen, wie die Dinge, aber wenn es keine andere Möglichkeit...InformationsquelleAutor Tim Castelijns
War ich mit dem Die Java-Implementierung von JSONPath und habe das gleiche Problem. Was für mich gearbeitet war Sie '[0]', um die json-Pfad-string. Also in deinem Fall:
$.single.name[0]
data[?(@.id==9617)][0].is_favorite
dies nicht funktioniert, entwederdata[?(@.id==9617)].[0].is_favorite
Ein Beispiel geben Ihre Daten zuerst.
Hier ist es
{state:{apiVersion:"V3_0",errorLevel:0,errorMessage:null,errorLink:null},data:[{id:94617,is_favorite:true,vip_sub_offers:[],vouchers:[{id:11613004,code:"F8JL2",offer:94617,subOffer:1613,validTo:"2016-05-20T23:59:59.000",state:"USED",stateCode:2,obtainType:"NORMAL",redirectUrl:null,phoneNumber:null,messageText:null,shopId:94614,assignTime:"2016-05-19T00:00:03.000",useTime:"2016-05-19T00:00:05.000"}]}]}
Ihre Daten werden nicht an die standard-json-format.
InformationsquelleAutor pepan