Поскольку Json4s поставляются с сериализацией карты только тогда, когда ключ является String, я пытаюсь написать свои собственные сериализаторы для конкретной карты с перечислением Java в качестве ключа.Написание пользовательского сериализатора для 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, используя его. Каков правильный способ создания этого пользовательского сериализатора?