2015-01-22 9 views
16

Verwenden der ashphy json path evaluator und die folgende JSON:Fehler jsonpath Abfrage Komponieren erstes Objekt einer gefilterten Reihe zurückzukehren

{ "store": { 
    "book": [ 
     { "category": "reference", 
     "author": "Nigel Rees", 
     "title": "Sayings of the Century", 
     "price": 8.95 
     }, 
     { "category": "fiction", 
     "author": "Evelyn Waugh", 
     "title": "Sword of Honour", 
     "price": 12.99 
     }, 
     { "category": "fiction", 
     "author": "Herman Melville", 
     "title": "Moby Dick", 
     "isbn": "0-553-21311-3", 
     "price": 8.99 
     }, 
     { "category": "fiction", 
     "author": "J. R. R. Tolkien", 
     "title": "The Lord of the Rings", 
     "isbn": "0-395-19395-8", 
     "price": 22.99 
     } 
    ], 
    "bicycle": { 
     "color": "red", 
     "price": 19.95 
    } 
    } 
} 

Ich mag eine Abfrage schreiben, die Kategorie Filter, z.B. "Fiktion", und dann nur das erste Element zurückgeben. Ich kann es nicht wirklich herausfinden.

Zum Beispiel $..book[?(@.category == "fiction")], wird eine Reihe von 3 Bücher zurückgeben, aber ich will nur das erste Buch:

{ "category": "fiction", 
     "author": "Evelyn Waugh", 
     "title": "Sword of Honour", 
     "price": 12.99 
     } 

Kann es getan werden ?? Das Offensichtliche schien zu sein, ein "[0]" zum Ende hinzuzufügen, aber es funktioniert nicht.

Antwort

0

suchte ich die Website Analytics (Anmerkung: diese aus ist http://ashphy.com/JSONPathOnlineEvaluator/ Prüfung):

enter image description here

Platzieren Sie die [0] Index funktionierts nachschlagen. Die Site akzeptiert lediglich, was in das Argument von jsonPath (jsonObj, Abfragezeichenfolge) gehen wird, daher muss die Indexreferenz außerhalb dieser Bewertung liegen, die die Site nicht tut.

jsonPath(foo, '$..book[?(@.category == "fiction")]')[0] 
+0

Danke, aber das ist nicht, was ich suche - der JsonPath gibt ein Array zurück, und die [0] greift auf das erste Element des Arrays. Ich brauche den JsonPath, um ein Element zu filtern. Ich habe keinen direkten Zugriff auf das Array. – Blazes

Verwandte Themen