Я не знаю, существует ли эта вещь или существуют лучшие практики.
У меня есть строка 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
, [это] является хорошей отправной точкой.