Circe JSON Parser を使用して MongoDB 拡張 JSON を解析しようとしています。以下のケースでは、クラスには long データ型の priorityOrder があります。
case class relinfo(id:String,assetId:String,insureeId:String,queue:String,priorityOrder:Long) extends baseDomain
ただし、MongoDB JSON 形式に変換されると、以下に説明する特別な mongo 形式に変換されます (priorityOrder フィールドを確認してください)。
{
"_id" : "4abf009d-64b1-496c-b0e8-9061f5e183a0",
"id" : "4abf009d-64b1-496c-b0e8-9061f5e183a0",
"assetId" : "e26d5310-ab0c-4672-9971-4babd3420302",
"insureeId" : "cdee05a1-a09c-4e10-81df-c3f112298cc3",
"queue" : "Low",
"priorityOrder" : {
"$numberLong" : "1930926795621"
}
}
課題は、逆シリアル化プロセス中です。この JSON を取り、circe パーサーを使用して具体的なオブジェクト型に変換しようとすると、priorityOrder 属性のマッピングに失敗します。長いデータを処理するカスタム エンコーダー/デコーダーを作成する方法はありますか?特別な方法で入力します。カスタム エンコーダー/デコーダーは、"$numberLong" ネストされた型から値を読み取り、その値を Long データ型に変換します。
circeパーサーからこの例外を受け取ります
Left(DecodingFailure(Long, List(El(DownField(priorityOrder),true,false))))