Разбор ответа из XML или JSON API с помощью Httpful PHP

Я использую PHP-библиотеку Httpful для получения данных из API, используя JSON или XML. Мой код очень прост и возвращает ответ от URL с базовой аутентификацией.

$url = "API_URL";
$response = \Httpful\Request::get($url)
    ->expectsXml() // or ->expectsJson()
    ->authenticateWith('USERNAME', 'PASSWORD')
    ->send();
echo "{$response}";

Я успешно отображаю весь ответ, но как мне вернуть одну переменную?

Например, если бы я хотел получить город от каждого человека, как бы это выглядело? я пытался echo "{$response->body->city}"; но это не похоже на работу.

XML, который возвращается API, отформатирован так:

<ArrayOfPERSON xmlns:i="xxx" xmlns="xxx">
  <PERSON>
    <CITY></CITY>
    <COUNTRY></COUNTRY>
    <STATE></STATE>
    <STREET1></STREET1>
    <STREET2></STREET2>
    <WORKPHONE></WORKPHONE>
    <ZIP></ZIP>
  </PERSON>
</ArrayOfPERSON>

И переключение заголовка на JSON имеет данные в формате:

[
  {
    "STREET1": ""
    "STREET2": ""
    "CITY": ""
    "STATE": ""
    "ZIP": ""
    "COUNTRY": ""
    "WORKPHONE": ""
  }
]

1 ответ

Решение

Если посмотреть на структуру JSON, то получается, что ответ является вложенным.

Поэтому я считаю, что вам нужно получить доступ к телу следующим образом:

echo $response->body[0]->STREET1;

Примечание: всегда полезно изучить $response просто делая var_dump($response) когда вы не можете понять, как ориентироваться. Просто взглянув на полученную структуру, вы получите ясный ответ!

Другие вопросы по тегам