将字符串反序列化为java对象,如果对象中的某些属性在字符串中不存在对应的键值对,一般该属性就是默认值,当然也要看不同的json序列化框架,在使用java的json序列化框架时我们很容易处理这些情况。
在使用scala时如果想进行json序列化和反序列化,有时并不是那么方便,尤其是在字符串和scala对象之间进行互转,
json4s就是一个使用scala写的json序列化框架,可以很好第解决字符串和scala对象之间的转换。
回到开始的问题,如果对象中的某些属性在字符串中并不一定存在,如果没做一定的处理就会报错,这时我们需要将相应的属性设为Option类型。示例:
假设有个scala模式类:
case class Person(name:String, age:int, nickname:String)
字符串: {"name":"xiaoming", age:10}
此时如果用这个字符串反序列化为Person类就会报错,can not find valid value for nickname,大概是这个错,
把nickname改为Option类型:
case class Person (name: String, age: int, nickname: Option[String] = Some("xiaoming"))
这样就不会报错了