考虑我有一个JSON文件(名为expectedResponse.json),它有一些字段和值。现在我必须编写一个groovy脚本来比较两个文件,即使字段的位置混乱也不会打扰... 即如果我的expectedResponse有“name”:“abc”作为第一个字段那么如果我的generatedResponse有“name”:abc作为第二个字段,它不会失败。< / p>
答案 0 :(得分:1)
尝试JsonSlurper
:
import groovy.json.JsonSlurper
def json1 = '{"name" : "abc", "value": "123", "field" : "xyz"}'
def json2 = '{"field" : "xyz", "value": "123" ,"name" : "abc"}'
def slurp1 = new JsonSlurper().parseText(json1)
def slurp2 = new JsonSlurper().parseText(json2)
assert slurp1 == slurp2
它将json转换为instanceof Map
的对象,如果具有相同的大小,则map为equals,并且尽管它们的顺序为key和values。
请注意,作为其他注释,此解决方案不适用于json数组,如
def json1 = '[{"n":"3","sv":"0.3"},{"n":"2","sv":"0.2"},{"n":"1","sv":"0.1"},{"n":"5","sv":"0.5"},{"n":"4","sv":"0.4"}]'
def json2 = '[{"n":"1","sv":"0.1"},{"n":"2","sv":"0.2"},{"n":"3","sv":"0.3"},{"n":"4","sv":"0.4"},{"n":"5","sv":"0.5"}]'
由于这种情况下的诽谤者没有将对象转换为instanceof Map
希望它有所帮助,