2015-01-22 10 views
16

Utilizzando il ashphy json path evaluator, e la seguente JSON:Problemi comporre interrogazione jsonpath per restituire primo oggetto di una matrice filtrato

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

Vorrei scrivere una query che filtra categoria, per esempio "fiction", e quindi restituire solo il primo elemento. Non riesco proprio a capirlo.

Per esempio, $..book[?(@.category == "fiction")], restituirà una serie di 3 libri, ma voglio solo il primo libro:

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

si può fare ?? La cosa ovvia sembrava essere quella di aggiungere un "[0]" alla fine, ma non funziona.

risposta

0

ho esaminato il sito di analisi (Nota: questo è da testare http://ashphy.com/JSONPathOnlineEvaluator/):

enter image description here

Posizionamento del [0] Indice sguardo funziona. Il sito accetta solo ciò che andrà all'interno dell'argomento di jsonPath (jsonObj, stringa di query), quindi il riferimento dell'indice deve superare questa valutazione che il sito non esegue.

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

Grazie, ma non è quello che sto cercando: jsonPath restituisce un array e [0] accede al primo elemento dell'array. Ho bisogno di jsonPath per filtrare un elemento. Non ho accesso diretto all'array. – Blazes

Problemi correlati