groovy - 从字符串值提取构建的映射 - 无法恢复值
问题描述
我目前正在尝试在 groovy 中操作地图,但我遇到了一个我无法解决的问题。
我构建了一个地图,以便将 id 作为键和名称作为值,我必须将其存储为字符串,然后恢复它并重建地图。我的钥匙看起来像 id:my:device,名字看起来像
当我构建我的地图时,我最终会得到类似 mymap = [id:my:device: ...etc.] 的东西,这不会导致任何恢复问题,mymap[id:my:device] 会给出我的设备名称。
编辑:我为每个地图元素构建地图name_uid_map[measure.uid] =jSonResponse.value
,在我的测试用例结束时,我将它存储为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"='my device name' ... } 如果我这样做
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 中处理地图一点也不轻松,我确定我做错了什么,但我无法弄清楚,有人可以帮助我吗?
亚历克斯
解决方案
嗯,其实我找到了另一种方式来满足我的需求
在我构建初始地图的 testStep 中,我执行以下操作:导入 groovy.json.JsonBuilder 并将我的地图存储在这样的自定义属性中,以确保它是有效的 JSON
testRunner.testCase.setPropertyValue("name_uid_map", new JsonBuilder(name_uid_map).toString())
在下一个 testStep 中,我执行以下操作(JSON 的简单提取):
def name_uid_map = context.expand( '${#TestCase#name_uid_map}' )
def jsonSlurper = new groovy.json.JsonSlurper()
map = jsonSlurper.parseText(name_uid_map)
它工作正常。
推荐阅读
- c++ - 函数模板不会在 VS2019 express 中编译
- php - 如何在 PHP 中将对象 json_encode 到数组中?
- javascript - React-native eas-build 在内部和生产分布上失败了 android/ios
- api-platform.com - 为什么在 Symfony 项目中使用“php bin/console cache:clear”命令时会收到与 PHP8 #[ApiResource()] 属性相关的错误?
- powershell - Windows上带有冒号的ffmpeg尾随选项
- android - 在后台线程中调用 createCaptureSession
- tensorflow - 使用 TF Lite Model Maker 创建的模型出现 TF.js 导入错误
- reactjs - React:如何使商店对重新加载无懈可击?
- amcharts4 - 你知道 amcharts 对数刻度的底吗?
- python - TypeError: plot_partial_dependence() 得到了一个意外的关键字参数“kind”