質問: json_sort(b) #=> 順番が違っても同一と判定したい ```
回答: Arrayを順番によらず同一視したいということは、RubyのArrayに展開されるのが間違っていると言う事だと思います。この場合はSetが望むものではないでしょうか? array_classオプションで配列をどのクラスにするか指定できる()ので、それを使う事で以下のようにかけます。 ``` require 'set' a = JSON.parse('{"a": 1, "b": [1, 2]}',array_class: Set) b = JSON.parse('{"b": [2, 1], "a": 1}',array_class: Set) p a,b,a==b ``` ただし、Setだと`[1,1,2]`が`[1,2]`と同じに扱われてしまうので、それだと不味い場合は、 ``` class CustomArray < Array def ==(a) self.sort == a.sort end end a = JSON.parse('{"a": 1, "b": [1, 2]}',array_class: CustomArray) b = JSON.parse('{"b": [2, 1], "a": 1}',array_class: CustomArray) ``` とすると質問と同じ結果を出すコードになりますし、またはSetから入力をvalidateするクラスを作ってそれを用いるのもありえると思います。