私は、Scala Pickling ライブラリを使用して、パッケージの aおよび aMap
オブジェクトを含むオブジェクトをシリアル化および逆シリアル化する Scala プログラムに取り組んでいます。String
Point2D.Double
java.awt.geom
関連するロジックは次のとおりです。
contents +=
new Button("Save Config") {
reactions += {
case ButtonClicked(_) => {
var m: Map[String, Point2D.Double] = Map()
nodeFields.foreach(x => {
m += (x._1 -> new Point2D.Double(x._2._1.text.toDouble, x._2._2.text.toDouble))
})
val pkl = m.pickle
fc.showSaveDialog(null)
val outputFile = fc.selectedFile
val writer = new PrintWriter(outputFile)
writer.write(pkl.value)
writer.close()
Dialog.showMessage(null, "Success!")
}
}
}
もっと見る必要がある場合は、問題のあるロジックを含むコミットがあります
現状では、 からの JSON 形式の文字列出力は、 の値が削除されていることを除いて、pkl.value
動作するシリアライズされた です。Map[String, Point2D.Double]
Point2D.Double
出力のスニペットを次に示します。
{
"$type": "scala.collection.mutable.Map[java.lang.String,java.awt.geom.Point2D.Double]",
"elems": [
{
"$type": "scala.Tuple2[java.lang.String,java.awt.geom.Point2D.Double]",
"_1": "BOTTOMLANE\r",
"_2": {
}
},
{
"$type": "scala.Tuple2[java.lang.String,java.awt.geom.Point2D.Double]",
"_1": "UPPERLANESECOND_0\r",
"_2": {
}
},
{
"$type": "scala.Tuple2[java.lang.String,java.awt.geom.Point2D.Double]",
"_1": "upperSecondTower_1",
"_2": {
}
},
...
]
}
これを修正するにはどうすればよいですか?