Json4s には、キーが文字列の場合にのみマップのシリアル化が付属しているため、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を取得することはできません。このカスタム シリアライザーを記述する正しい方法は何ですか?