私はGroovyマップをファイルに永続化しようとしています。私の現在の試みは、文字列表現を書き出してからそれを再び読み込んで、evaluate
を呼び出して、再び使用する準備ができたらマップを再作成することです。groovyマップを引用符付きの文字列にシリアライズ
私が抱えている問題は、マップの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つの印刷ステートメントは、ほとんど仕事 - しかし、キーb
の値の前後に引用符がなくなっています。 [a: 123, b: 'test']
を表示する代わりに、[a: 123, b: test]
と表示されます。
この時点でダメージが掛かっています。は、文字列ではなく識別子としてtest
を評価しようとすると、チョークを呼び出します。
だから、私の具体的な質問:
- はGroovyで/デシリアライズマップをシリアル化するためのより良い方法はありますか?
- 適切な引用符でマップの文字列表現を生成する方法はありますか?読み込み可能な文字列がJSONであるよう
// serialize def m = [a: 123, b: 'test'] def str = m.inspect() // deserialize m = Eval.me(str)
グルーヴィーなマップをシリアル化する別の方法を::
人を切断して貼り付けるためのdefを追加;) – orbfish