RubyでJSONデータを各要素の順番によらず、同じ要素が含まれていれば(連想配列の場合はキーと値の組み合わせが同じであれば)同一と判定したいと思っています。

以下のようなコードを考えていますが、もっとシンプルなやり方があれば教えてください。 (目的は同一判定なのでソート以外のやり方でも構いません)

def json_sort(json)
  # jsonから生成したRubyオブジェクトを再帰的にソートする
  case json
  when Array
    # 配列の場合はソートし、json_sortを各要素に適用
    json.sort.map{|v|json_sort(v)}
  when Hash
    # 連想配列の場合はキーでソートした上でjson_sortを各要素に適用
    Hash[json.sort.map{|(k,v)|[k, json_sort(v)]}]
  else; json
  end
end

a = JSON.parse('{"a": 1, "b": [1, 2]}')
b = JSON.parse('{"b": [2, 1], "a": 1}')
json_sort(a) == json_sort(b) #=> 順番が違っても同一と判定したい