我正在比较ruby+cucumber中的两个json内容或对象,如下所示
但当我比较时,如果内容的顺序有所不同,它不会忽略它我知道这个语句比较起来是两个字符串那么,我是否可以通过忽略顺序序列来比较两个json对象呢?
expect(@act_resp_excl_key).to eq(exp_data_excl_key)
在上面的细节中添加更多的信息。我有两个json文档,如下所示。
json1 = {
"entries" = > [{
"doingBusinessAsName" = > "KROGER FOODS",
"legalName" = > "Kroger-Corps"
}
]
}
json2 = {
"entries" = > [{
"legalName" = > "Kroger-Corps"
"doingBusinessAsName" = > "KROGER FOODS",
}
]
}
当我在ruby+cucumber中比较这两个json时,得到的结果是失败但逻辑上是一样的,我应该通过我使用上面的比较语句来验证两个json。
@转化生长因子,
我使用了你指定的语句,但我的比较仍然失败你能帮我什么问题吗?
expect(JSON.parse(@act_resp_excl_key)).to eq JSON.parse(exp_data_excl_key)
最佳答案
如果数据只是一个字符串中的json(请给出数据示例),您可以将其解析为一个ruby散列并进行比较。
require 'json'
JSON.parse(@act_resp_excl_key).class => Hash
然后断言两个散列相等:
expect(JSON.parse(@act_resp_excl_key)).to eq JSON.parse(exp_data_excl_key)
即使顺序不同,也可以。