我目前正在尝试以普通的方式操作地图,但遇到了无法解决的问题。
我构建一个地图是为了将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处理地图我一点也不轻松,我敢肯定我做错了什么,但是我不明白,有人可以帮我吗?
亚历克斯
答案 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)
,效果很好。