2016-06-10 26 views
1

我正在使用Httpful PHP library從API使用JSON或XML獲取數據。我的代碼非常簡單,並使用基本身份驗證返回來自url的響應。使用Httpful解析XML或JSON API的響應PHP

$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": "" 
    } 
] 
+0

@jszobody是的,這工作!它也似乎區分大小寫。 '$ response-> body [0] - > CITY'是正確的輸出。 – cul8r

+0

真棒,很高興幫助!我只是把它作爲下面的答案發布,你能接受嗎? – jszobody

回答

2

從看你的JSON結構,看起來響應是嵌套的。

所以我相信你需要訪問身體像這樣:

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

旁註:它總是有用的審查只是做了var_dump($response)當你想不通你$response如何導航它。只看結果的結構通常會讓答案相當清楚!