PHP上的json_decode == NULL {" action":" online"," email":null," script":null}

时间:2013-07-06 03:59:36

标签: php json

PHP json_decode为此JSON字符串返回null

{"action":"online","email":null,"script":null}  

并且验证器显示其有效。帮助

编辑: 使用

echo bin2hex($json);

我得到了

a bunch of padded zeros on the end  ...c7d00000000 - Unexpected control character found

需要以某种方式摆脱它们。

答案:

似乎我们发现了这个问题。试试

  $json = trim($json), if it don't fix use $json = preg_replace('/\\\\0+$/', '', $json) 

- Havenard

2 个答案:

答案 0 :(得分:2)

我不这么认为,如果你把它包裹在''""这样 -

在你的情况下使用""提防它,礼貌msturdy

<?php

$json =  '{"action":"online","email":null,"script":null}';
var_dump(json_decode($json, true));

输出 -

array(3) {
  ["action"]=>
  string(6) "online"
  ["email"]=>
  NULL
  ["script"]=>
  NULL
}

键盘 - http://codepad.org/AdzSN4R3

评论后,来自DOCS -

  

json_decode此功能仅适用于UTF-8编码数据。

答案 1 :(得分:0)

您发布的内容肯定是有效的JSON:

$ echo '{"action":"online","email":null,"script":null}' | python -mjson.tool
{
    "action": "online", 
    "email": null, 
    "script": null
}

最有可能的是,编码会发生一些变化。您是通过浏览器提交的吗?也许您可以利用其开发人员工具深入了解数据的确切发送方式? (或嗅探电线......)