【问题标题】:Parse response from XML or JSON API with Httpful PHP使用 Httpful PHP 解析来自 XML 或 JSON API 的响应
【发布时间】:2016-06-10 16:15:26
【问题描述】:

我正在使用Httpful PHP library 从使用 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 后,数据格式如下:

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

【问题讨论】:

  • @jszobody 是的,这行得通!它似乎也区分大小写。 $response-&gt;body[0]-&gt;CITY 是正确的输出。
  • 太棒了,乐于助人!我刚刚把它作为答案发布在下面,你能接受吗?

标签: php json xml httpful


【解决方案1】:

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

所以我相信你需要像这样访问身体:

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

旁注:当您不知道如何导航时,只需执行var_dump($response) 即可检查您的$response 总是有用的。只需查看生成的结构通常就会很清楚答案!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 2017-06-14
    • 2020-08-26
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多