我正在尝试将 groovy 映射保存到文件中。我目前的尝试是写出字符串表示形式,然后将其读回并evaluate
在我准备好再次使用它时调用它以重新创建地图。
我遇到的问题是toString()
地图的方法从元素的值中删除了重要的引号。当我的代码调用评估时,它抱怨一个未知的标识符。
这段代码演示了这个问题:
m = [a: 123, b: 'test']
print "orig: $m\n"
s = m.toString()
print " str: $s\n"
m2 = evaluate(s)
print " new: ${m2}\n"
前两个打印语句几乎可以工作——但是键值周围的引号b
消失了。它不是显示[a: 123, b: 'test']
,而是显示[a: 123, b: test]
。
至此,伤害就完成了。当evaluate
它尝试test
作为标识符而不是字符串进行评估时,调用会阻塞。
所以,我的具体问题:
- 有没有更好的方法在 Groovy 中序列化/反序列化地图?
- 有没有办法用正确的引号生成地图的字符串表示?