由于 Json4s 仅在键是字符串时才带有 Map 序列化,因此我正在尝试为特定 Map 编写自定义序列化程序,并将 Java 枚举作为键。
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 使用它。编写此自定义序列化程序的正确方法是什么?