2014-10-07 70 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