ruby - 将 Json 响应与 Json 文本文件进行比较

标签 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: 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
由于 Hashes 不能很好地排序,上面的方法将不起作用。您可以使用其他技术之一:

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/

相关文章:

Ruby 正则表达式和字符串变量

ruby - 由于缺少 libmysql,在 Windows 上安装 mysql-2.9.0 gem 失败

ruby-on-rails - 升级到 Rails 3 : Problem with routes

c# - 如何在JSON数组中按键获取元素

JSON 与表单 POST

regex - 生成适合 Guids 的单词(仅供娱乐)

ruby-on-rails - 使用 Rubocop 的长强参数断线

android - 如何在 TextView 中显示 .rtf 文件?

python - 用 Python 在屏幕上显示文本的简单方法?

php - Highcharts——从 mysql 获取类别