【问题标题】:Having trouble accessing keys in a map in Groovy在 Groovy 中访问映射中的键时遇到问题
【发布时间】:2020-09-11 18:41:48
【问题描述】:

我正在将字符串转换为映射,并打印键和值,一切看起来都不错。我使用 keySet() 打印键和使用 values() 打印它们的值,并且所有显示都按预期显示。 但是,当我尝试使用 get() 访问任何键或使用 containsKey() 检查时,它会失败并返回 false。 以下是打印语句和结果:

println("====== the keys and values: " + dlmap.keySet() + "   " + dlmap.values())
Which prints:
====== the keys and values: [ "URL", "DOWNLOAD_FILE", "PROCESS_FILE"] ["www.treasury.gov/ofac/downloads", "sdn_xml.zip", "sdn.xml"]

但是,没有一个键可以访问。这是一个例子:

println("====== contains key URL: " + dlmap.containsKey("URL"))
which prints:  
====== contains key URL: false

我检查了转换为map的原始输入字符串,没有隐藏字符。

感谢任何帮助或线索。
谢谢

【问题讨论】:

  • 我认为我无法复制它。你能把你的整个代码放在 GroovyConsole 中运行吗?请在此处分享您的代码。我认为这里的关键问题是如何创建地图。

标签: groovy


【解决方案1】:

简单的.toString() 往往会产生误导。原因,为什么你看到 "URL" 是因为您的密钥实际上在密钥周围包含 "。如果在 怀疑,更喜欢.inspect() 而不是简单的.toString() 用于调试 更容易找到这样的问题。

def map = ['"URL"': "https://example.com", "URL": "https://example.com"]
println map.keySet()
// ⇒ ["URL", URL]
println map.keySet().inspect()
// ⇒ ['"URL"', 'URL']

【讨论】:

  • 好消息!!.. 这是最可能的解释。
  • @ChayneP.S.除非 OP “调整”打印结果 - 并且 [ "URL" 之间的空格将是一个很好的指标
  • @cfrick 非常感谢您或您快速正确的回复。欣赏!
猜你喜欢
  • 2021-09-06
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多