当我在 JSON 响应中获得一组对象时,它们可能以不同的顺序表示。
有时我得到这个
JSON.parse(response.body) # => [{"a" => "b"}, {"c" => "d"}]
或这个
JSON.parse(response.body) # => [{"c" => "d"}, {"a" => "b"}]
但对我来说,这两个结果都是正确的。无论它们的顺序如何,测试我响应的对象的最简单方法是什么?
当我在 JSON 响应中获得一组对象时,它们可能以不同的顺序表示。
有时我得到这个
JSON.parse(response.body) # => [{"a" => "b"}, {"c" => "d"}]
或这个
JSON.parse(response.body) # => [{"c" => "d"}, {"a" => "b"}]
但对我来说,这两个结果都是正确的。无论它们的顺序如何,测试我响应的对象的最简单方法是什么?
您可以使用哈希将其转换为类似集合的结构。
first_response.inject({}){|s, h| s[h] = true; s}
将与
second_response.inject({}){|s, h| s[h] = true; s}
除了其他有用的特性,json 规范gem 有一个be_json_eql
匹配器,它可以在不考虑顺序的情况下工作。