The JsonPath component eases JSON navigation using the JSONPath syntax as described in RFC 9535.
This Component is experimental. Experimental features are not covered by Symfony's Backward Compatibility Promise.
composer require symfony/json-pathuse Symfony\Component\JsonPath\JsonCrawler;
$json = <<<'JSON'
{"store": {"book": [
{"category": "reference", "author": "Nigel Rees", "title": "Sayings", "price": 8.95},
{"category": "fiction", "author": "Evelyn Waugh", "title": "Sword", "price": 12.99}
]}}
JSON;
$crawler = new JsonCrawler($json);
$result = $crawler->find('$.store.book[0].title');
$result = $crawler->find('$.store.book[?match(@.author, "[A-Z].*el.+")]');
$result = $crawler->find("$.store.book[?(@.category == 'fiction')].title");The compliance test suite is gathered from the JSONPath Test Suite.
When new commits are pushed to the upstream repository, it is necessary to gather them by following these steps:
- Update the
referencefield ofcomposer.jsonto the latest commit hash of thejsonpath-standard/jsonpath-compliance-test-suitepackage - Update the
versionfield to the date of the commit - Repeat the steps above for the
composer.jsonfile present at the root level of thesymfony/symfonyrepository - Run
composer update - Ensure the tests pass