首页 > 解决方案 > 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]

标签: jenkinsgroovykey-valuelinkedhashmap

解决方案


以下代码确实有效。

map = ['key1': 'param1']
assert 'param1' == map['key1']

问题更新后

关键实际上不是字符串。 toString()会给你字符串 as String,可以用作键


推荐阅读