我正在尝试使用 Circe JSON Parser 解析 MongoDB Extended JSON,在大多数情况下都可以正常工作,但特殊数据类型除外,例如。在下面的案例类中,我有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 parser 得到这个异常
Left(DecodingFailure(Long, List(El(DownField(priorityOrder),true,false))))