好吧,我有一款游戏可以将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的问题。
因此,如果有人能够向我提供有关问题所在的一些信息,那将非常感激。
答案 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编码的字符串。