PHPで空オブジェクトのJSON文字列をデコード→エンコードする

PHPJSON文字列をデコードするときによく連想配列形式でデコードしてたんだけど、この場合空オブジェクトをデコード→エンコードしたときに元の形式に戻らない。


<?php
$jsonStr = '{"value1":{},"value2":}';
$jsonObj = json_decode($jsonStr, true);
$jsonStr = json_encode($jsonObj);
echo $jsonStr;
// 期待値:{"value1":{},"value2":
}
// 結果 :{"value1":,"value2":}

連想配列形式でデコードしなければちゃんと元の形式で出力される。


<?php
$jsonStr = '{"value1":{},"value2":}';
$jsonObj = json_decode($jsonStr);
$jsonStr = json_encode($jsonObj);
echo $jsonStr;
// 結果 :{"value1":{},"value2":
}