Работа с JSONPath и PHP
Описание
В этом руководстве мы обсудим использование JSONPath с PHP для поиска и извлечения частей данных JSON.
Если вы не знакомы с JSONPath, прочтите также учебник JSONPath от w3resource с JavaScript .
Получить JSONPath
Для работы с JSONPath и PHP вам необходимо скачать jsonpath.php. Вы можете скачать его с http://code.google.com/p/jsonpath/.
После загрузки вам нужно включить указанный файл PHP на веб-странице, и вы готовы использовать его.
Синтаксис:
jsonPath(obj, expr [, args])
Параметры:
параметр | Описание |
---|---|
объект (объект | массив) | Этот параметр представляет Объект, представляющий структуру JSON. |
expr (строка) | Этот параметр представляет строку выражения JSONPath. |
args (объект | неопределенный) | Этот параметр представляет Объект, управляющий оценкой пути и выводом. На момент написания статьи поддерживается только один участник. |
args ['resultType'] ("VALUE" | "PATH") | По умолчанию этот параметр заставляет результат совпадать со значениями. Остальные нормализованные выражения пути. |
Возвращаемые значения
Возвращаемое значение | Описание |
---|---|
массив | Массив, содержащий либо значения, либо нормализованные выражения пути, которые соответствуют выражению пути, указанному в качестве входных данных. |
ложный | Возвращается, если совпадений не найдено. |
Пример использования JSONPath с PHP
JSON, с которым мы будем работать, выглядит следующим образом:
{ "MovieDatabase": {
"movie": [
{ "name":"The Change-Up",
"genre": "comedy",
"director": "David Dobkin",
"Facebook_like": 252
},
{ "name":"Rise of the Planet of the Apes",
"genre": "SciFi",
"director": "Rupert Wyatt",
"Facebook_like": 472
},
{ "name":"30 Minutes or Less",
"genre": "adventure",
"director": "Ruben Fleischer",
"Facebook_like": 114
},
{ "name":"Final Destination 5",
"genre": "Horror",
"director": "Steven Quale",
"Facebook_like": 241
}
]
}
}
PHP-код для поиска и извлечения различных частей вышеупомянутых данных JSON выглядит следующим образом (обратите внимание, что, поскольку мы будем использовать JSON-анализатор Michal Migurski, вам необходимо загрузить и включить его тоже):
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>PHP JSONPath example | JSON tutorial | w3resource</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
&</head>
<body>
<h1>This is an example of PHP with JSONPath</h1>
<?php
require_once('json.php');
require_once('jsonpath-0.8.1.php');
$json ='{ "MovieDatabase": {
"movie": [
{ "name":"The Change-Up",
"genre": "comedy",
"director": "David Dobkin",
"Facebook_like": 252
},
{ "name":"Rise of the Planet of the Apes",
"genre": "SciFi",
"director": "Rupert Wyatt",
"Facebook_like": 472
},
{ "name":"30 Minutes or Less",
"genre": "adventure",
"director": "Ruben Fleischer",
"Facebook_like": 114
},
{ "name":"Final Destination 5",
"genre": "Horror",
"director": "Steven Quale",
"Facebook_like": 241
}
]
}
}';
$parser = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
$json_object = $parser->decode($json);
$result = "";
$result .= $parser->encode(jsonPath($json_object, "$.MovieDatabase.movie[*].director")) . "<strong> : find all
directors</strong>
";
$result .= $parser->encode(jsonPath($json_object, "$..director")) . "<strong> : find all directors</strong>
";
$result .= $parser->encode(jsonPath($json_object, "$.MovieDatabase.*")) . "<strong> : find all movies</strong>
";
$result .= $parser->encode(jsonPath($json_object, "$.MovieDatabase..Facebook_like")) . "<strong> : find all facebook lies of
all the movies</strong>
";
$result .= $parser->encode(jsonPath($json_object, "$..movie[(count(@)-1)]")) . "<strong> : the last movie in data</strong>
";
$result .= $parser->encode(jsonPath($json_object, "$..movie[-1:]")) . "<strong> : the last movie in data</strong>
";
$result .= $parser->encode(jsonPath($json_object, "$..movie[0,1]")) . "<strong> : the first two movies in data</strong>
";
$result .= $parser->encode(jsonPath($json_object, "$..movie[:4]")) . "<strong> : the fourth movie in data</strong>
";
$result .= $parser->encode(jsonPath($json_object, "$..movie[?(@['genre'])]")) . "<strong> : genres of all the movies in
data</strong>
";
$result .= $parser->encode(jsonPath($json_object, "$..movie[?(@['Facebook_like']>200)]")) . "<strong> : movies with facebook
like more than 200</strong>
";
$result .= $parser->encode(jsonPath($json_object, "$..*")) . "<strong> : All the info in data</strong>
";
print($result);
?>
Посмотрите пример работы с JSONPath и PHP онлайн .
Предыдущая: Работа с JSONPath и JavaScript
Далее: Введение в BSON
Новый контент: Composer: менеджер зависимостей для PHP , R программирования