从Json中提取某些信息

时间:2014-10-07 22:10:38

标签: php json

我最近一直在XboxAPI.com上探索Xbox API,试图增加我对实际使用API​​和使用Json Data的了解和信心。我在另一个问题上发现了一些我玩过的问题的代码并让它给我一些回复,我目前使用的代码是:

$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;

但这不起作用。我不知道我离正确的答案有多远,但我将不胜感激。

由于

3 个答案:

答案 0 :(得分:1)

我怀疑你需要一些类似于json_decode(http://php.net/manual/en/function.json-decode.php

  :
$result = json_decode(curl_exec($ch);
echo $result->devices->titles->name;

注意:以上内容尚未经过测试。

答案 1 :(得分:0)

devices是一个数组(注意JSON中的[]),所以你需要

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

同样适用于titles - 这也是一个数组,需要在PHP中进行[]解除引用。 var_dump($result)将显示一个格式良好的数组结构转储,并向您显示您需要使用什么“路径”来获取其中的任何数据。

答案 2 :(得分:0)

首先,执行如下所示的json_decode,它将放入一个关联数组。

然后,您还需要确保对多维的索引使用索引,如下所述。

而且我们 - 基本上,你错过了json_decode。

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

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

你的卷曲没有输出到字符串变量。