json 間の構造的な diff を取るには?
json 間の構造的な diff が取りたいです。これを実現する方法はありますか。
イメージとしては、 jsondiff a.json b.json
とやると、 json の構造的な差分が出力されるようなツールです。(a.json
, b.json
はそれぞれ、単一の json オブジェクトからなるテキストファイル)
背景としては、2つの、 type 定義にそこそこの差異が発生している ES サーバー2つがあったときに (しかし、おそらく半分ぐらいの構造は一致している、、はず) 、その mapping の定義 (SQL でいう create 文の集合のようなもの) の差分を取得したい、がやりたいことです。
REST api をたたいて、それぞれから mapping 定義を json を取得した状態で、ここから差分を計算しようとしているのですが、いいツールがあるといいなと思いながら質問しています。
参考のために、 Elasticsearch から取得できる mapping 情報 json がどのようなものかというと、 公式サイト より例えば次のような形です。
{
"mappings": {
"user": {
"_all": { "enabled": false },
"properties": {
"title": { "type": "string" },
"name": { "type": "string" },
"age": { "type": "integer" }
}
},
"blogpost": {
"properties": {
"title": { "type": "string" },
"body": { "type": "string" },
"user_id": {
"type": "string",
"index": "not_analyzed"
},
"created": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
}
}
}
}
}