3

私は最も奇妙な振る舞いをしており、今数時間それに取り組んでいました. 大きくて複雑な JSON 文字列を AJAX 経由でサーバーに送信していますが、それをデコードすると、その要素にアクセスできません。しかし、デコードされた JSON 文字列をファイルに保存して再度開くと、突然、その要素を操作できるようになります。この振る舞いを説明することはできません。これが私のコードです。

これは動作しません

header('Access-Control-Allow-Origin: *');

$json = $_POST['json'];
$obj = json_decode($json, true);
// At this point I cannot work with the $obj elements

これは機能します

header('Access-Control-Allow-Origin: *');

$json = $_POST['json'];
$data = json_decode($json, true);

file_put_contents( 'test.txt', $data);
$file = file_get_contents('test.txt');
$obj = json_decode($file);
// At this point I can work with the $obj elements

別のサーバーから JSON を取得するため、ヘッダーが必要であることに注意してください。

4

2 に答える 2

3

あなたのjsonは二重にエンコードされているようです。つまり、2回デコードすると機能します。試す

$obj = json_decode(json_decode($json, true));
于 2013-03-06T18:23:27.063 に答える
2

最初の試行で使用したもの:

$obj = json_decode($json, true);

真は、オブジェクトではなく配列に変換しています

于 2013-03-06T18:21:07.110 に答える