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"
最初の2つのprintステートメントはほぼ機能しますが、キーの値を囲む引用符b
はなくなりました。を表示する代わりに、を表示[a: 123, b: 'test']
します[a: 123, b: test]
。
この時点でダメージが発生します。文字列ではなく識別子としてevaluate
評価しようとすると、呼び出しがチョークします。test
だから、私の特定の質問:
- Groovyでマップをシリアル化/逆シリアル化するためのより良い方法はありますか?
- 適切な引用符を使用してマップの文字列表現を生成する方法はありますか?