json4s сериализация строки в определенный класс записи avro - PullRequest
0 голосов
/ 27 марта 2019

У меня есть строка json, которую я пытаюсь сериализовать как специфичную для Avro запись (класс падежа scala расширяет org.apache.avro.specific.SpecificRecordBase).Json4s выдает исключение по праву для искаженного json в случае нормального класса case в Scala, но не выдает исключение для класса case, который расширяет конкретную запись.Вместо этого он пытается содержать нули (не уверен, что это делает json4s или имеет конкретную запись).
Скажем, у меня есть этот json:

{
  "name":"Tom",
  "id":1,
  "address":{
    "houseNum": 88,
    "addresssss":"101 Hacker drive"
  }
}

И класс case,

case class Employee(id:Int , name:String , address:Address)
case class Address(houseNum: Int , address1:String)

Он выдает исключение, когда я пытаюсь сделать:

def convertToEmployee(fileName:String):Employee={
    val json = readFromFile(fileName)
    implicit val formats = DefaultFormats
    val x = parse(json).extract[Employee]
    x
  }

Но когда я пытаюсь сделать то же самое для класса дел, который расширяет SpecificRecordBase, он инициализирует все поля вобратиться к объекту со значением NULL и сохранить имя и идентификатор без изменений, а не выдавать ошибку?

Итак, мне было интересно, существует ли элегантный способ справиться с этой ситуацией?Хотя я использую json4s.

...