4

現在、このコードを実行しています。},{ がある場所で変数 $json を分割していますが、これらの文字も削除しますが、実際には json_decode 関数が機能するために末尾と先頭の括弧が必要です。回避策を作成しましたが、よりエレガントな解決策があるかどうか疑問に思っていましたか?

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5},{"a":1,"b":2,"c":3,"d":4,"e":5}';
$individuals = preg_split('/},{/',$json);

$loop_count =1;
foreach($individuals as $object){
    if($loop_count == 1){$object .='}';}
    else{$object ="{".$object;}
    print_r(json_decode($object));
    echo '<br />';
$loop_count++;
}
?>

編集: $json 変数は、実際には json オブジェクトとして取得されます。適切な例は

[{"id":"foo","row":1,"col":1,"height":4,"width":5},{"id":"bar","row":2, "列":3,"高さ":4,"幅":5}]

4

2 に答える 2

4

(おそらく) 既にご存じのとおり、コンマと 2 つのオブジェクトがあるため、開始する必要がある文字列は有効な json ではありません。基本的には、コンマで区切られた 2 つの json 文字列です。

それらを分割することでこれを解決しようとしていますが、これを修正するはるかに簡単な方法があります。

回避策は、文字列を角かっこで囲んで有効な JSON に変換するだけです。

$json = '[' . $json . ']';

出来上がり。文字列は有効な json になり、 を 1 回呼び出すだけで正常に解析されjson_decode()ます。

それが役立つことを願っています。

于 2013-05-17T22:17:28.627 に答える
0

いつでも再度追加できます。これを試して:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5},{"a":1,"b":2,"c":3,"d":4,"e":5}';
$individuals = preg_split('/},{/',$json);

foreach($individuals as $key=>$val)
   $individuals[$key] = '{'.$val.'}';
于 2013-05-17T22:19:54.307 に答える