кодесурса
«JSON

Работа с JSONPath и PHP

script1adsense2code
script1adsense3code

Описание

В этом руководстве мы обсудим использование 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code