jenkins - Map 根据键名取值时返回 null
问题描述
在 Jenkins 管道中运行时,我有一个关于从 Grovvy 中的 LinkedHashMap 获取值的非常奇怪的问题。
我有一张这样的地图:map = ['key1': 'param1']
现在我想获得 key1 的值,所以我调用map.get('key1')
or map['key1']
。令人惊讶的是,这两个都返回了null
。
当我尝试调用map.keySet()
时,它会返回key1
。最有趣的是,当我称之为按预期map.get(map.keySet()[0])
返回时。param1
那么直接怎么可能map.get('key1')
不起作用呢?
更新:
经过一番调查,我发现key1
不是 String 而是org.codehaus.groovy.runtime.GStringImpl
. 有谁知道为什么它被投射到这个类而不是字符串?
这是创建初始地图的方式:
result = ["${key}": value]
解决方案
以下代码确实有效。
map = ['key1': 'param1']
assert 'param1' == map['key1']
问题更新后
关键实际上不是字符串。 toString()
会给你字符串 as String
,可以用作键
推荐阅读
- android - 重新创建视图后,片段从 ViewModel 中丢失数据
- apache-spark - spark-shell所有执行器在启动后都死了
- r - 使用 ggplot2 绘制大范围的热图
- django - Django - TemplateDoesNotExist 错误/找不到 .html 文件
- javascript - Summernotejs:每个单词的第一个字母都是自动大写的
- angularjs - AM图表上的wong位置
- javascript - Google Text-toSpeech - 在前端获取音频文件
- git - 连接到远程ssh时如何启用vs终端git命令自动完成?
- javascript - 通过chrome扩展使用inject_script替换chrome的WebAPI函数
- java - 更改 GridLayout 元素的宽度