PHPとAPI間でデータのやりとりをしているのですが、JSONデータのやり取りについて、ご相談させていただきたく思います。
相談事
APIからの取得JSONを、PHPでは連想配列にして使用しています。
その後、そのデータを今度はAPIへパラメータとして送っています。
ただ、この時に連想配列にJSONデコードしたことで、JSONエンコードの結果が、最初の取得JSONと比べて、オブジェクト、連想配列で相違が発生し、同じJSONになってくれなくなっています。
こちらの対応方法をご教授願えないでしょうか。
動作例
PHP
1$json = '[{"AAA":{},"BBB":[{"BBB-1":"1","BBB-2":"2","BBB-3":"3"}]}]'; 2$json = json_decode($json,true); 3$json = json_encode($json); 4echo $json."\n";
[{"AAA":[],"BBB":[{"BBB-1":"1","BBB-2":"2","BBB-3":"3"}]}] AAAが配列に変化しています。
試したこと
1つ目:JSONエンコードに"JSON_FORCE_OBJECT"を追加。
PHP
1$json = '[{"AAA":{},"BBB":[{"BBB-1":"1","BBB-2":"2","BBB-3":"3"}]}]'; 2$json = json_decode($json,true); 3$json = json_encode($json,JSON_FORCE_OBJECT); 4echo $json."\n";
{"0":{"AAA":{},"BBB":{"0":{"BBB-1":"1","BBB-2":"2","BBB-3":"3"}}}} AAAはオブジェクト化しましたが、残り全てが変わってしまっています。
2つ目:再エンコード
PHP
1$json = '[{"AAA":{},"BBB":[{"BBB-1":"1","BBB-2":"2","BBB-3":"3"}]}]'; 2$json = json_decode($json,true); 3$json = json_encode($json); 4$json = json_decode($json); 5$json = json_encode($json); 6echo $json."\n";
[{"AAA":[],"BBB":[{"BBB-1":"1","BBB-2":"2","BBB-3":"3"}]}] 3行目のエンコード時点で、AAAは配列になってしまっているため、その後デコードをしても配列のままでした。
補足
値編集などを行ってからAPIに送るということもあり、APIでオブジェクトで再取得してマージというのは行いたくないところがございます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。