JSON在php中无法正确解码

时间:2011-01-08 11:04:52

标签: php json

  

可能重复:
  Can't decode JSON string in php

我的智慧在这里结束了,我无法理解。 我的代码在本地正常工作(使用xamp),但现在它无法正常工作。

当我运行此代码时:

echo "passed in parameter" . $_POST["jsoned"];
$unjasoned = json_decode("[\"23\",[],[[\"a@a.a\",\"2011-01-08\"]]]");
die("\ntype\n\t". gettype($unjasoned) . "\n\n\nAmount\n\t" . $unjasoned[0]);

我明白了:

passed in parameter[\"23\",[],[[\"a@a.a\",\"2011-01-08\"]]]
type
    array


Amount
    23

完全我想要的是什么

但是,当我在$_POST["jsoned"]中使用传递的变量时会出现问题,您在上面的结果中看到的显然与我手动插入的内容完全相同。

所以,如果我这样做(相同的确切输入):

echo "passed in parameter" . $_POST["jsoned"];
$unjasoned  = json_decode($_POST["jsoned"]);
die("\ntype\n\t". gettype($unjasoned) . "\n\n\nAmount\n\t" . $unjasoned[0]);

我明白了:

passed in parameter[\"23\",[],[[\"a@a.a\",\"2011-01-08\"]]]
type
    NULL


Amount

所以......发生了什么事?!如果你有任何提示与我分享,那就永远感激不尽。

PS。我的服务器运行php版本5.2.13

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

帖子中的字符串包含\"而不是"

当你自己写一个字符串作为文字时,你必须写\",因为你在双引号内,但在结果字符串中你只能获得"

尝试此调试以查看差异:

echo $_POST["jsoned"], PHP_EOL;
echo "[\"23\",[],[[\"a@a.a\",\"2011-01-08\"]]]";