使用Httpful PHP解析来自XML或JSON API的响应

使用Httpful PHP解析来自XML或JSON API的响应,php,json,xml,httpful,Php,Json,Xml,Httpful,我使用从使用JSON或XML的API获取数据。我的代码非常简单,通过基本身份验证从url返回响应 $url = "API_URL"; $response = \Httpful\Request::get($url) ->expectsXml() // or ->expectsJson() ->authenticateWith('USERNAME', 'PASSWORD') ->send(); echo "{$response}"; 我成功地显示了整

我使用从使用JSON或XML的API获取数据。我的代码非常简单,通过基本身份验证从url返回响应

$url = "API_URL";
$response = \Httpful\Request::get($url)
    ->expectsXml() // or ->expectsJson()
    ->authenticateWith('USERNAME', 'PASSWORD')
    ->send();
echo "{$response}";
我成功地显示了整个响应输出,但是如何返回单个变量呢

例如,如果我只想从每个人那里得到城市,这会是什么样子?我试过
echo“{$response->body->city}”但它似乎不起作用

api返回的XML格式如下:

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

从JSON结构来看,响应似乎是嵌套的

所以我相信你需要像这样接近身体:

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


旁注:当您不知道如何导航时,通过执行
var\u dump($response)
检查
$response
总是很有用的。只要看看结果结构,答案通常就非常清楚了

@jszobody是的,这起作用了!它似乎也区分大小写<代码>$response->body[0]->CITY
是正确的输出。太棒了,很高兴提供帮助!我只是把它贴在下面作为答案,你能接受吗?
echo $response->body[0]->STREET1;