gpt4 book ai didi

scala - Play Scala Json Missing Property vs Null

转载 作者:行者123 更新时间:2023-12-04 19:08:35 25 4
gpt4 key购买 nike

我有一个用例,我需要接受空值,但不能缺少属性。
这是在 Play Framework 2.1.3 上

例如:

case class Foo(a: Option[String], b: Option[String], c: Option[String])

这个案例类可能是更大案例类的一部分

我想接受以下内容并生成 foo 对象:
{
"foo" : {
"a" : "blah",
"b" : null,
"c" : "blah"
}
}

但不是这个:
{
"foo" : {
"a" : "blah",
"c" : "blah"
}
}

目前我有以下内容可以将 JSON 读入 case 类:
val FooReader = (
(__ \ "a").readNullable[Setting] and
(__ \ "b").readNullable[String] and
(__ \ "c").readNullable[String])(Foo)

如何让 FooReader 在缺少的属性上生成 JsError 但允许为空?

最佳答案

你可以使用类似的东西:

val FooReader = (
(__ \ "a").readNullable[String] and
(__ \ "b").read(Reads.optionNoError[String]) and
(__ \ "c").readNullable[String]
)(Foo)

如果 '(__\"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)

关于scala - Play Scala Json Missing Property vs Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18387280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com