Новость из категории: Информация

Применение данных веб-служб в формате JSON средствами PowerShell. Продолжение

Применение данных веб-служб в формате JSON средствами PowerShell. Продолжение
Данные объекта в формате JSON

Сравним это представление с представлением той же классификации животных в формате JSON (см. скриншот выше).

Оба формата справляются с задачей по-разному. После предварительного анализа ясно, что JSON для описания объектов использует фигурные скобки ({}) и массивы в квадратных скобках ([]), элементы которых (в нашем случае — три типа животных) разделены запятыми.

К сожалению, реальные веб-службы выдают данные JSON в виде длинной строки текста, а не удобной для восприятия структуры, показанной в нашем примере. Это может затруднять поиск нужных данных, если не прибегнуть к помощи подключаемого модуля Chrome под названием JSON Formatter (или JSONView — для пользователей Firefox). У Internet Explorer модуль структурной распечатки отсутствует, поэтому я предпочитаю не использовать IE с JSON.

Применение данных веб-служб в формате JSON средствами PowerShell. Продолжение

Ответ на запрос по почтовому индексу



Структурная печать важна, поскольку позволяет получить иерархическое представление, которое помогает извлечь нужные данные. Реализованная в PowerShell поддержка JSON не предусматривает чего-либо, подобного Xpath. Фрагмент структурной распечатки данных, полученных в ответ на запрос по почтовому индексу 12345, показан на скриншоте выше. Здесь хорошо видно, что объект resourceSets содержит объект по имени resources, который содержит объект по имени address, а тот в свою очередь содержит нужные нам объекты adminDistrict (административный округ), adminDistrict2 (штат) и locality (город). Будь это объект PowerShell, мы бы смогли извлечь locality с помощью точечной нотации
$somevariable.resourceSets.resources.address.locality

Однако мы имеем дело с объектом JSON, а не PowerShell, и именно здесь нам пригодится команда Invoke-RestMethod, которая, по сути, является дубликатом Invoke-WebRequest, за исключением того, что она ориентирована на объекты JSON и автоматически представляет их в виде объекта PowerShell:
$URI = " http://dev.virtualearth.net/REST/v1/Locations?q=12345,%20USA&key=BingKey"
$Result = Invoke-RestMethod $URI

Теперь объекты JSON «живут» в переменной SResult как объекты PowerShell. Для того чтобы вывести искомый город (locality), достаточно ввести:
$Result.resourceSets.resources.address.locality

Применение данных веб-служб в формате JSON средствами PowerShell. Продолжение

Словом, если выяснится, что веб-служба в ответ на запрос выдает данные в формате JSON, взгляните на структурную распечатку этих данных, чтобы узнать иерархию объекта, а затем с помощью Invoke-RestMethod преобразуйте данные JSON в объект PowerShell и примените точечную нотацию PowerShell для извлечения желаемого элемента.


<<К началу статьи

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх