Извлечение данных из строки json со структурным языком

Я не знаю, существует ли эта вещь или существуют лучшие практики.

У меня есть строка json, и я хотел бы узнать, можно ли извлекать данные из этого json, используя строку запроса, как в sql.

Пример с этим json:

[ { "user": [ { "id": 1, "name": "Smith", "visits": [ { "id": 1, "date": "2016-08-30 16:00:00", "pageViews": 18 } ] }, { "id": 2, "name": "Willis", "visits": [ { "id": 2, "date": "2016-08-30 18:00:00", "pageViews": 34 } ] } ] } ] 

Если я выполняю запрос типа SELECT user.name WHERE user.visits.pageViews > 20 Я получаю Willis

Else, что лучший способ сделать что-то подобное в PHP?

благодаря

Используйте jq который является правильным инструментом для работы. Предположим, что 39233103.json содержит образец ввода в quesiton.

Образец прогона

 $ jq '.[]|.user[]|select(.visits[].pageViews>20)|.name' 39233103.json "Willis" 

Чтобы получить raw output используйте параметр -r

 $ jq -r '.[]|.user[]|select(.visits[].pageViews>20)|.name' 39233103.json Willis 

Теперь, чтобы сделать это из php, вы можете использовать [exec] . Предположим, что приведенный ниже сценарий называется 39233103.php

 <?php $output=array(); exec("jq -r '.[]|.user[]|select(.visits[].pageViews>20)|.name' 39233103.json", $output); foreach ($output as $val){ echo $val."\n"; } ?> 

Вывод

 $ php 39233103.php Willis 

Если вы не знакомы с jq , [это] является хорошей отправной точкой.