1

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を取得することはできません。このカスタム シリアライザーを記述する正しい方法は何ですか?

4

2 に答える 2