2011-01-08 70 views
0

可能重複:
Can't decode JSON string in phpJSON不是在PHP正確解碼

我在我的智慧結束了,我不能弄明白。 我的代碼在本地正常工作(使用xamp),但現在不起作用。

當我運行這段代碼:

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

我得到:

passed in parameter[\"23\",[],[[\"[email protected]\",\"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\",[],[[\"[email protected]\",\"2011-01-08\"]]] 
type 
    NULL 


Amount 

所以......這到底是發生?如果您有任何提示與我分享,請永遠感謝您。

ps。我的服務器上運行PHP版本5.2.13

+0

養活你的$ _ POST [「jsoned」]以stripslashes()函數首先 – 2011-01-08 11:10:43

+0

如果您嘗試使用設簡單引號'在你的字符串測試在第一實例版本你也許會有所不同,不是嗎?做一個print_r($ _ POST [「jsoned」]),這樣我們就可以看到真正的調試內容。 – regilero 2011-01-08 11:14:07

+0

我發誓我不是懶惰的,我實際上搜索了大約一個小時,然後放棄了。 – vvMINOvv 2011-01-08 11:24:59

回答

0

在後,該字符串具有\"而不是"

當您將字符串自己寫爲文字時,您必須編寫\",因爲您位於雙引號內,但在結果字符串中只會得到一個"

試試這個調試看出區別:

echo $_POST["jsoned"], PHP_EOL; 
echo "[\"23\",[],[[\"[email protected]\",\"2011-01-08\"]]]";