比较json文件,不管使用soap ui在groovy中的字段位置

时间:2015-10-30 05:11:50

标签: json groovy soapui

考虑我有一个JSON文件(名为expectedResponse.json),它有一些字段和值。现在我必须编写一个groovy脚本来比较两个文件,即使字段的位置混乱也不会打扰... 即如果我的expectedResponse有“name”:“abc”作为第一个字段那么如果我的generatedResponse有“name”:abc作为第二个字段,它不会失败。< / p>

1 个答案:

答案 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

希望它有所帮助,