Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 比较Json响应和Json文本文件_Ruby_Json_Text - Fatal编程技术网

Ruby 比较Json响应和Json文本文件

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:

我有一个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}]
,则需要首先对它们进行排序(有关更多技术,请参阅):

编辑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}]