Я пытаюсь разобрать MongoDB Extended JSON с использованием Circe JSON Parser, отлично работает в большинстве случаев, за исключением специальных типов данных, например. в классе ниже i у меня приоритетOrder, который имеет длинный тип данных.Пользовательский кодировщик/декодер для разбора MongoDB Extended JSON
case class relinfo(id:String,assetId:String,insureeId:String,queue:String,priorityOrder:Long) extends baseDomain
Но когда он преобразуется в формат MongoDB JSON, он преобразуется в специальный формат Монго, описанным ниже (проверьте поле 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» и преобразовывать это значение в длинный тип данных.
Я получаю это исключение из Circé парсера
Left(DecodingFailure(Long, List(El(DownField(priorityOrder),true,false))))