2011-01-08 6 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あなたは第一例のバージョンでは、あなたの文字列のテストの周りusin簡単な引用符 'をしようとした場合にstripslashes()最初 –

+0

へ[「jsoned」]あなた多分違いを得るだろうか? print_r($ _ POST ["jsoned"])を実行すると、実際のデバッグコンテンツを見ることができます。 – regilero

+0

私は怠け者ではないと誓って、私は実際に約1時間を探してから諦めました。 – vvMINOvv

答えて

1

は、ポスト内の文字列が\"の代わり"を持ってCan't decode JSON string in phpすでにここ

+0

が存在していてもわからなかったのは、重複を見つけるためにアップフォートを取得していないので、コメントまたは少なくともCWだったはずです – Gordon

+0

@Shrapnelあなたは最近非常に皮肉です...そして+1重複 –

+0

もう一度ありがとう、私が実際に1時間以上を探していた前に私が言及したように。私はちょうど私が推測しているものを知りませんでした。歓声 – vvMINOvv

0

に答え実行されます。

文字列をそのままリテラルとして書くときは、二重引用符で囲まれているため、\"と書く必要がありますが、結果の文字列には"しか含まれません。

違いを確認するには、このデバッグを試してみてください:

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

私はできるが、私は十分な評判を持っていない場合、私はあなたをupvoteしたい。あなたの答えはあてになりました – vvMINOvv