Ruby 比较Json响应和Json文本文件
我有一个text.json文件和一个json HTTP响应。检查它们是否相等有什么好处 这是我所拥有的,但我认为有更好的解决方案Ruby 比较Json响应和Json文本文件,ruby,json,text,Ruby,Json,Text,我有一个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:
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}]
,则需要首先对它们进行排序(有关更多技术,请参阅):
编辑2由于
Hash
es不能很好地排序,因此上述方法不起作用。您可以使用其他技术之一:
JSON.parse(response["data"]).sort.eql?(JSON.parse(File.read(text.json)).sort)
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?
那么JSON响应数组呢<代码>[{},{}].eqls?[{},{}]?我不确定我是否理解您的问题-响应是一个JSON数组,文件中有一个JSON数组?如果JSON的顺序很重要,那么是的,否则,您需要调整解决方案…是的,两者都是数组,顺序无关紧要。如何正确解析/读取以
[]
而不是{}
开头的文件JSON.parse
无法解析数组。是的,它可以:JSON.parse('[{“a”:1,“b”:2},{“a”:2,“b”:1}])
[{“a”=>1,“b”=>2},{“a”=>2,“b”=>1}]