In Jsonpath (Jayway Java implementation), how do I find array elements where a certain field is missing? For example, in the below JSON, how do I find books without isbn?
In theory, empty(true) predicate should do the trick: $.store.book[?(@.isbn empty true)]. This doesn't work though (bug?). Only empty(false) returns results. Searching for null or zero-length values also does not produce the desired result.
{
"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
}
},
"expensive" : 10
}
Found a solution using regex filtering: $.store.book[?(@.isbn =~ //)]