当我在JSON响应中获得一个对象数组时,它们可能以不同的顺序表示。
有时候我会得到这个
JSON.parse(response.body) # => [{"a" => "b"}, {"c" => "d"}]
或者
JSON.parse(response.body) # => [{"c" => "d"}, {"a" => "b"}]
但对我来说,两个结果都是正确的。无论顺序如何,测试哪些对象的最简单方法是什么?
答案 0 :(得分:3)
您可以使用哈希将其转换为类似于集合的结构。
first_response.inject({}){|s, h| s[h] = true; s}
与
相同second_response.inject({}){|s, h| s[h] = true; s}
答案 1 :(得分:2)
除了其他有用的功能外,json spec gem还有一个be_json_eql
匹配器,无需按顺序工作。