【发布时间】:2012-12-25 10:12:51
【问题描述】:
我正在尝试将 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 中序列化/反序列化地图?
- 有没有办法用正确的引号生成地图的字符串表示形式?
【问题讨论】:
标签: serialization groovy deserialization