由於Json4s只有在關鍵字是字符串時才帶有Map序列化,因此我試圖使用Java枚舉作爲關鍵字爲特定Map編寫自定義序列化程序。所有的爲Json4s編寫自定義序列化程序
class HistoricalRecordCustomSerializer extends CustomSerializer[Map[QuotedData,Double]](
format => (
{
case JArray(items) =>
items.map{
case JObject(JField(name,JDouble(value))::Nil) => (QuotedData.valueOf(name),value)
}.toMap
},
{
case x: Map[QuotedData,Double] =>
JArray(
x.map(entry =>
JObject(
List(
JField(entry._1.toString,JDouble(entry._2))
)
)
).toList
)
}))
首先,這顯然實現不串行化的情況下工作,因爲x: Map[QuotedData,Double]
被刪除。另外,我無法設法讓json4s使用它。 寫這個自定義序列化程序的正確方法是什麼?