我正在使用Spray Json并且想要使用case类中定义的默认值,如果填充对象的Json中缺少值。
示例
假设我想从案例类Person
创建一个对象,但是使用不带age
的json文档来执行此操作:
case class Person(name: String, city: String, age: Int = -1)
{"name": "john", "city": "Somecity"}
如何在Spray Json中使用默认值?
答案 0 :(得分:3)
我知道如何执行此操作的唯一方法是使用Option[T]
作为字段类型。而且,如果该字段是可选的,这是语义上正确的方法:
case class Person(name: String, city: String, age: Option[Int])
如果年龄不存在,年龄将为无。从您的示例开始,您使用荒谬值(-1)作为不存在年龄的标记,使用Option
将帮助您更多。
但是,如果你真的需要一个默认值,你可以使用case class
或者使用从JSON获得的另一个getOrElse
填充
getOrElse(defaultValue)
。