I have the following JSON Structure:
[
{ "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
}
]
I want to get only ONE object that containts the title "The Lord of the Rings"
If i type:
$.[*].title
The output it gives me is:
[
"Sayings of the Century",
"Sword of Honour",
"Moby Dick",
"The Lord of the Rings"
]
I tried doing this:
$.[*].[?(@.title=='The Lord of the Rings')]
But it did'nt work. Please, can someone help me?
Thanks in advance!
CodePudding user response:
Excuse my previous answer. I didn't know jsonpath was a thing. I found your answer:
$[?(@.title == 'The Lord of the Rings')]
The reason is because, since the objects are in the root element, you are already trying to select the title in the elements with the @.title
. When you select all elements with $.[*]
, you're already too low of a level to find by title.