从字符串值提取构建的映射-无法恢复值

时间:2018-08-01 12:57:21

标签: groovy soapui

我目前正在尝试以普通的方式操作地图,但遇到了无法解决的问题。

我构建一个地图是为了将id作为键,并将名称作为值 我必须将其存储为字符串,然后恢复它并重建地图。 我的密钥看起来像id:my:device,名称看起来像

建立地图时,我会遇到类似 mymap = [id:my:device:... etc。]不会造成任何恢复问题,mymap [id:my:device]给出了我的设备名称。

编辑: 我为每个地图元素构建了一个name_uid_map[measure.uid] =jSonResponse.value的地图,并在我的testCase末尾使用testRunner.testCase.setPropertyValue("name_uid_map", name_uid_map.toString()

进行了存储

存储和恢复后,由于它以字符串形式存储,因此解密变得不容易。我修改了字符串以使其具有“ id:my:device” =“我的设备名称”,然后按照以下步骤重建映射(否则它将与第一个“:”分开)

mymap = map.split(",\\s*").collectEntries{
    def keyAndVal = it.split("=")
    [(keyAndVal[0]):keyAndVal[1]]
}

问题是现在我重建的地图看起来像 {“ id:my:device” ='我的设备名称'...} 如果我这样做

mymap.each{
key, value -> 
    log.info key
    log.info value

}

我获得 密钥:“ id:my:device” 值:我的设备名称 哪个是对的。当我想从钥匙中回收价值时,我遇到了问题,即:

mymap["id:my:device"] = null

如果我尝试获取值的类型,我会得到:

my value = class org.codehaus.groovy.runtime.NullObject

使用Groovy处理地图我一点也不轻松,我敢肯定我做错了什么,但是我不明白,有人可以帮我吗?

亚历克斯

1 个答案:

答案 0 :(得分:0)

好吧, 其实我找到了另一种满足我需求的方法

在构建初始地图的testStep中,执行以下操作: 导入groovy.json.JsonBuilder 然后将地图存储在这样的自定义属性中,以确保它是有效的JSON

testRunner.testCase.setPropertyValue("name_uid_map", new JsonBuilder(name_uid_map).toString())

在下一个测试步骤中,我将执行以下操作(JSON的简单提取):

def name_uid_map = context.expand( '${#TestCase#name_uid_map}' )
def jsonSlurper = new groovy.json.JsonSlurper()

map = jsonSlurper.parseText(name_uid_map)

,效果很好。