JSON解码问题

时间:2014-03-01 00:20:49

标签: php json

我有以下代码:

$instance = new riotapi($srg_lower);
    $grab_data = $instance->getSummonerByName($summoner_nm);
    $decode_data = json_decode($grab_data);
    $grab_id = $decode_data->{'id'};

    $grab_runes = $instance->getSummoner($grab_id,'runes');
    $decode_runes = json_decode($grab_runes);
    $grab_names = $decode_runes->{'name'};

注意:getSummonerByName需要一个名称,getSummoner使用该ID。

编辑:以下是$decode_runes的示例:http://pastebin.com/6h2TX9t1

编辑:以下是$grab_runes的示例:http://pastebin.com/V3MNtbFA

我从所有内容中获取使用var_dump()的值,但当我转到var_dump() $grab_names时,我得到了返回值NULL

我明白这个问题可能会让我盯着我,但我看不到它^^;所以我很感激能够指出它的人!

2 个答案:

答案 0 :(得分:0)

通常这意味着你有一个非法的角色。例如,使用øæå将导致json_decode返回null。

Returns the value encoded in json in appropriate PHP type. Values true, false and null (case-insensitive) are returned as TRUE, FALSE and NULL respectively. NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.

http://dk1.php.net/json_decode

答案 1 :(得分:0)

感谢您添加$grab_runes转储。通过获取字符串并将其粘贴到JSONLint中,您可以非常清楚地了解JSON结构。从该图中可以清楚地看出,JSON所代表的根对象上没有name属性。

唯一的根属性是summonerIdpages

所以你试图访问它的JSON结构中不存在你的问题name,所以当你解码它并尝试访问它时,你当然会得到一个空值。 / p>

看起来有一个name属性嵌套了一点。

因此,访问它将是这样的:

$decode_runes->pages[i]->name

i是您感兴趣的page的索引(数据中有几个)。