我有一个文件 text.json 和一个 JSON HTTP 响应。检查它们是否相等有什么好处?
这是我所拥有的,但我认为还有更好的解决方案。
JSON.parse(response["data"]).eql?(File.read(text.json))
最佳答案
您需要解析测试的两端:
JSON.parse(response["data"]).eql?(JSON.parse(File.read(text.json)))
编辑
如果您想测试 JSON 的数组,并且您不确定文件中的顺序是否相同,意思是 [{a:1, b:2}, {a: 2, b:1}]
应该等于 [{a:2, b:1}, {a:1, b:2}]
, 你'需要先对它们进行排序(有关更多技术,请参阅 here):
JSON.parse(response["data"]).sort.eql?(JSON.parse(File.read(text.json)).sort)
编辑2
由于 Hash
es 不能很好地排序,上面的方法将不起作用。您可以使用其他技术之一:
from_response = JSON.parse(response["data"])
from_file = JSON.parse(File.read(text.json))
(from_response & from_file) == from_response
(from_response - from_file).empty?
关于ruby - 将 Json 响应与 Json 文本文件进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765660/