The JsonPath component eases JSON navigation using the JSONPath syntax as described in RFC 9535.
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