PHPはJSONの空オブジェクトに弱い
今日はPHPの話。
文字列のjsonをデコードしてエンコードする簡単なお仕事。
<?php $raw = '{"hoge":{}}';// 空オブジェクト $map = json_decode($raw, true); $result = json_encode($map); echo($result);// 元どおり {"hoge":{}} になることを期待する
最後のecho
は$raw
と同じで
'{"hoge":{}}'
になると思うじゃん。
でも実際はこれ。
{"hoge":[]}
空オブジェクトが空配列になってるーーー!!!
だってPHPは連想配列もarrayだもん
考えてみれば当たり前で、phpにmap型はなく全てarrayで表現されるから、空オブジェクトを表現したjsonをデコードしたらarrayになって、それをjsonにエンコードしたらそのままarrayになる。
今日はマジでこれにハマった。。つらい。。