如何使用Spray Json的默认值?

时间:2015-09-11 13:42:56

标签: json scala spray-json

我正在使用Spray Json并且想要使用case类中定义的默认值,如果填充对象的Json中缺少值。

示例

假设我想从案例类Person创建一个对象,但是使用不带age的json文档来执行此操作:

case class Person(name: String, city: String, age: Int = -1)

{"name": "john", "city": "Somecity"}

如何在Spray Json中使用默认值?

1 个答案:

答案 0 :(得分:3)

我知道如何执行此操作的唯一方法是使用Option[T]作为字段类型。而且,如果该字段是可选的,这是语义上正确的方法:

case class Person(name: String, city: String, age: Option[Int])

如果年龄不存在,年龄将为无。从您的示例开始,您使用荒谬值(-1)作为不存在年龄的标记,使用Option将帮助您更多。

但是,如果你真的需要一个默认值,你可以使用case class或者使用从JSON获得的另一个getOrElse填充

。代码中的getOrElse(defaultValue)