playground - jsonpath substring example
Problemas al componer la consulta jsonpath para devolver el primer objeto de una matriz filtrada (1)
Examiné el sitio de análisis (Nota: esto es de la prueba http://ashphy.com/JSONPathOnlineEvaluator/ ):
Colocar el índice [0] buscar funciona funciona. El sitio simplemente acepta lo que irá dentro del argumento de jsonPath (jsonObj, cadena de consulta), por lo que la referencia del índice debe ir fuera de esta evaluación que el sitio no hace.
jsonPath(foo, ''$..book[?(@.category == "fiction")]'')[0]
Usando el evaluador de ruta ashphy json y el siguiente JSON:
{ "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
}
}
}
Me gustaría escribir una consulta que filtre la categoría, por ejemplo, "ficción", y luego devolver solo el primer elemento. Parece que no puedo entenderlo.
Por ejemplo, $..book[?(@.category == "fiction")]
, devolverá una serie de 3 libros, pero solo quiero el primer libro:
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
¿¿Se puede hacer?? Lo obvio parecía ser agregar un "[0]" al final, pero no funciona.