プログラムからJSONを出力する場合、Object内のkeyの順番が固定されている保証はない。二つのJSONを比較したい場合、出力のたびにkeyの順番が違うとdiff
を使ってもうまく比較できない。
jq
のオプションで--sort-keys
オプションを使用すると、各オブジェクトのkeyを並び替えて出力してくれるため、JSONをjq
で整形したうえでdiff
するといい。
--sort-keys / -S:
Output the fields of each object with the keys in sorted order.
$ diff <(./JSON出力プログラム | jq . --sort-keys) <(./JSON出力プログラム | jq . --sort-keys)