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"
        }
      }
    }
  }
}