Jam*_*hen 5 scala playframework playframework-2.0 playframework-2.1
我有一个用例,我需要接受空值,但不是缺少属性.这是在Play Framework 2.1.3上
例如:
case class Foo(a: Option[String], b: Option[String], c: Option[String])
Run Code Online (Sandbox Code Playgroud)
此案例类可以是更大案例类的一部分
我想接受以下内容并生成foo对象:
{
"foo" : {
"a" : "blah",
"b" : null,
"c" : "blah"
}
}
Run Code Online (Sandbox Code Playgroud)
但不是这个:
{
"foo" : {
"a" : "blah",
"c" : "blah"
}
}
Run Code Online (Sandbox Code Playgroud)
目前我有以下内容将JSON读入案例类:
val FooReader = (
(__ \ "a").readNullable[Setting] and
(__ \ "b").readNullable[String] and
(__ \ "c").readNullable[String])(Foo)
Run Code Online (Sandbox Code Playgroud)
如何使FooReader在缺少的属性上生成JsError但允许null?
您可以使用以下内容:
val FooReader = (
(__ \ "a").readNullable[String] and
(__ \ "b").read(Reads.optionNoError[String]) and
(__ \ "c").readNullable[String]
)(Foo)
Run Code Online (Sandbox Code Playgroud)
如果缺少'(__ \"b")','Reads.optionNoError [String]'将产生JsError.
你实际上可以这样做:
val FooReader = (
(__ \ "a").read(Reads.optionNoError[String]) and
(__ \ "b").read(Reads.optionNoError[String]) and
(__ \ "c").read(Reads.optionNoError[String])
)(Foo)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2729 次 |
| 最近记录: |