プログラムから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)