我有一个JSON字符串,我试图将其序列化为Avro特定记录(scala案例类扩展了org.apache.avro.specific.SpecificRecordBase)。在普通的scala case类的情况下,Json4s正确地为格式错误的json抛出异常,但是对于扩展特定记录的case类则没有抛出异常。相反,它尝试包含null(不确定是json4s这样做还是具有特定记录)。
说我有这个json:
{
"name":"Tom",
"id":1,
"address":{
"houseNum": 88,
"addresssss":"101 Hacker drive"
}
}
还有一个案例类,
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
}
但是当我尝试对扩展的case类执行相同的操作时 SpecificRecordBase,它将地址对象中的所有字段初始化为 null并保持名称和ID完整无缺,而不是抛出错误?
所以我想知道是否有一种优雅的方式来处理这种情况? 我正在使用json4s。