字符串的json4s序列化到avro特定记录类

时间:2019-03-27 16:16:48

标签: scala avro json4s

我有一个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。

0 个答案:

没有答案