У меня есть строка 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.