作为一个从 groovy 开始的 tcl 开发人员,我对 groovy 中的列表和地图支持有点惊讶。也许我在这里遗漏了一些东西。
我习惯于在 tcl 中即时在字符串、列表和数组/映射之间进行转换。在 tcl 中,类似
"['a':2,'b':4]".each {key, value -> println key + " " + value}
将是可能的,就像在 groovy 中一样,每个命令都会逐步遍历字符串的每个字符。
这将是一个很大的问题,因为我可以轻松地使用 split 或 tokenize 命令之类的东西,但是因为序列化的列表或映射不仅仅是“a:2,b:4”,所以解析起来有点困难。
似乎 griffon 开发人员使用 stringToMap 库(http://code.google.com/p/stringtomap/),但该示例也无法处理序列化地图。
所以我现在的问题是:在 groovy 中解析地图或列表的最佳方法是什么?
干杯,拉尔夫
PS:这是一个时髦的问题,但我已经用 grails 标记了它,因为我需要 grails 的这个功能,我想通过 URL 传递地图
更新:这对我来说仍然是一个悬而未决的问题......所以这里有一些更新给那些有同样问题的人:
- 当您将 Map 转换为 String 时, a
.toString()
将导致在所有情况下都无法转换回 map 的结果,但是 an.inspect()
将为您提供一个 String ,可以将其评估回 map ! - 在 Grails 中,有一个
.encodeAsJSON()
和JSON.parse(String)
- 两者都很好用,但我还没有检查解析器将如何处理 JSON 函数(可能的安全问题)