gpt4 book ai didi

scala - Play 框架 JSON Reader 和自定义 JSErrors

转载 作者:行者123 更新时间:2023-12-02 17:52:42 24 4
gpt4 key购买 nike

我正在尝试读取可能具有来自客户端的以下参数的 JSON

{
"email" : "foobar@gmail.com",
"password" : "XXXX",
"facebookToken": "XXXXXXXXXXX"
}

facebookToken 可能为空或不存在,在这种情况下,应填写电子邮件/密码,反之亦然。

我在构建此阅读器时遇到问题,这是我到目前为止所拥有的:

val loginEmail = (
( __ \ "email").read[String] and
( __ \ "password").read[String]
)((email: String, password: String) => new User(email, password))

val loginFacebook = (
( __ \ "facebookToken").read[String]
)((facebookToken : String) => new User(facebookToken))

val loginReader(RequestBodyJson) = (
(RequestBodyJson).read[User](loginEmail) or
(RequestBodyJson).read[User](loginFacebook)
)

谁能告诉我如何正确地做到这一点?

我还希望它返回带有自定义消息的 JSError 。例如,如果 FacebookToken 不存在,并且电子邮件出现问题(“电子邮件无效”),而不是“/facebookToken 路径未找到”一般错误。

最佳答案

你可以使用这个技巧:

import play.api.libs.json._
import play.api.libs.functional.syntax._
import play.api.data.validation.ValidationError

....
(__ \ "facebookToken").read[String].orElse(Reads(_ => JsError(ValidationError("custom-error"))))

如果主读取器失败,您可以返回自定义 JsError。

关于scala - Play 框架 JSON Reader 和自定义 JSErrors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17818924/

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