PHP json_decode不工作

时间:2014-03-03 22:29:22

标签: php json

好吧,我有一款游戏可以将JSON格式的数据上传到我的网站。 JSON类似于:

{
  "PlayerList":[
    {
        "PlayerKills":0,
        "Username":"Player1",
        "TimePlayed":0,
        "Deaths":0
    },
    {
        "PlayerKills":0,
        "Username":"Player1",
        "TimePlayed":0,
        "Deaths":0
    }
  ]
}

在确认JSON确实正确且没有错误之后,我开始推测问题在于PHP。我用来获取JSON的代码是:

$decodedJSON =  json_decode($entityBody, true, 4);              
var_dump($decodedJSON);

使用$ entitybody作为字符串的JSON。

var_dump这里返回NULL,因为我使用PHP 5.2,我无法确定使用json_last_error的问题。

因此,如果有人能够向我提供有关问题所在的一些信息,那将非常感激。

4 个答案:

答案 0 :(得分:6)

试试这个:

$entityBody = stripslashes($entityBody);
// this will remove all backslashes which might be the cause of returning NULL

$decodedJSON = json_decode($entityBody, true);
// leave out the depth unless you really need it to be 4.

var_dump($decodedJSON);

文档:

stripslashes - http://php.net/manual/en/function.stripslashes.php

json_decode - http://php.net/json_decode

答案 1 :(得分:4)

不要设置depth参数。只需json_decode($entityBody,true);即可。

答案 2 :(得分:1)

在PHP 5.2中json_decode需要2个参数而不是3.我在PHP 5.2.17上检查它并显示:

Warning: json_decode() expects at most 2 parameters, 3 given. 

如果省略第三个参数,您将获得所需的内容:)

答案 3 :(得分:-1)

检查你的字符集。 json_decode它只适用于UTF-8编码的字符串。