相关疑难解决方法(0)

播放2 JSON格式中缺少属性的默认值

我在play scala中有一个等效的以下模型:

case class Foo(id:Int,value:String)
object Foo{
  import play.api.libs.json.Json
  implicit val fooFormats = Json.format[Foo]
}
Run Code Online (Sandbox Code Playgroud)

对于以下Foo实例

Foo(1, "foo")
Run Code Online (Sandbox Code Playgroud)

我会得到以下JSON文档:

{"id":1, "value": "foo"}
Run Code Online (Sandbox Code Playgroud)

此JSON是持久存储的,并从数据存储区读取.现在我的要求已经改变了,我需要为Foo添加一个属性.该属性具有默认值:

case class Foo(id:String,value:String, status:String="pending")
Run Code Online (Sandbox Code Playgroud)

写入JSON不是问题:

{"id":1, "value": "foo", "status":"pending"}
Run Code Online (Sandbox Code Playgroud)

但是从它读取会产生一个JsError,错过了"/ status"路径.

如何以最小的噪音提供默认值?

(ps:我有一个答案,我将在下面发布,但我对此并不满意,并且会赞成并接受任何更好的选择)

json scala playframework-2.2

34
推荐指数
4
解决办法
1万
查看次数

标签 统计

json ×1

playframework-2.2 ×1

scala ×1