2014-10-07 74 views
0

我最近一直在XboxAPI.com上探索Xbox API,試圖增加我對實際使用API​​和使用Json Data的知識和信心。我發現了一個問題,我有大約有玩一些代碼,得到它給我的東西回來,我目前使用的代碼是:從Json提取某些信息

$url  = 'https://xboxapi.com/v2/2745051201447500/presence'; 
$headers = array(
    'X-AUTH: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
); 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
$result = curl_exec($ch); 

在瀏覽器訪問該頁面給我以下內容:

{"xuid":2745051201447500,"state":"Online","devices":[{"type":"XboxOne","titles":[{"id":714681658,"name":"Home","placement":"Background","state":"Active","lastModified":"2014-10-07T22:02:34.821235Z"},{"id":446059611,"activity":{"richPresence":"In a Street Race."},"name":"Forza Horizon 2","placement":"Full","state":"Active","lastModified":"2014-10-07T22:02:34.821235Z"}]}]} 

我的問題是,我如何從上面拉出某些信息位?例如,如果我想拉動「名稱」並展示它,我該如何去做呢?我已經嘗試了幾件事情,包括以下內容:

echo $result->devices[0]->type; 

但這並不奏效。我不知道我離正確的答案有多遠,但希望得到任何幫助。

感謝

回答

0

首先,做一個像下面這樣的json_decode,它將放入一個關聯數組中。

然後,您還需要確保您使用的索引是多維的,如下所述。

而voilla - 基本上,你錯過了json_decode。

$result = json_decode(curl_exec($ch)); 
$result->devices[0]->type; 

哎 - 也忘

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

你嫋嫋不輸出到一個字符串變量。

+0

感謝您的答覆airtech。不幸的是,我仍然在瀏覽器中看到的僅僅是Json。你上面的代碼應該顯示「Xbox One」,對吧? – DroidShare 2014-10-07 23:04:05

+0

是的,它的確如此。 – airtech 2014-10-07 23:08:58

+0

你可以做var_dump(json_decode(curl_exec($ ch)))嗎? – airtech 2014-10-07 23:09:25

0

devices是一個數組(注意在JSON的[]),所以你需要

$result->devices[0]->type // XboxOne 
       ^^^ 

同樣將舉行titles - 這也是一個數組,並需要[]在PHP中提領。 var_dump($result)會向您顯示陣列的格式良好的結構化轉儲,並向您顯示您需要使用何種「路徑」才能獲取其中的任何數據。

+0

感謝您回覆Marc B.我已經添加了您的建議,但是我仍然在瀏覽器中完全一樣,它不會執行回顯。我用我正在使用的新代碼編輯了我的原始問題。再次感謝。 – DroidShare 2014-10-07 22:25:56