0

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!

1 Answer 1

1

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.

Sign up to request clarification or add additional context in comments.

4 Comments

Should just be $[...], not $.[...].
I literally just realized it and was coming back to correct. Thanks.
Thanks! That worked perfectly. You're the man.
Also, thanks for explaining what i was doing wrong. :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.