Home > other >  How to filter single string using JSONPath?
How to filter single string using JSONPath?

Time:02-12

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.

  • Related