【问题标题】:In play framework 2.5.3, parse a JsValue to a java object在play framework 2.5.3中,将一个JsValue解析为一个java对象
【发布时间】:2016-06-23 00:48:02
【问题描述】:

我的问题很简单,就是这样,我怎样才能将 json 转换为第三方 java class,它没有 applyunapply 的方法,但没有 scala case class。详细代码如下所示

def login = Action { implicit request =>
    val jsonBody = request.body.asJson // the jsonBody is value of Option[JsValue]

    val myClass = //some method can be provided to convert the jsonBody to myClass(a third-part java class)
}

提前致谢

【问题讨论】:

    标签: json playframework-2.5


    【解决方案1】:

    你可以定义一个类似 MyCaseClass(a: String, b: Int) 的案例类,然后验证你得到的 json 是这样的:

    request.body.asJson.validate[MyCaseClass] match {
      case myCaseClass: JsSuccess[MyCaseClass] => new JavaClass(a, b)
      case error: JsError => //handle the error
    }
    

    请注意,您可以使用Action(parse.json) { implicit request => 来验证您是否拥有有效的 Json 对象。

    【讨论】:

    • 感谢您的快速回答,但这不是我想要的。还有一点,parse.json 只能在 content-type 为application/json 时使用。当内容类型不是application/json, the request body will be parsed as None if you use parse.json`时。
    • 如果content-type不是application/json,做.asJson会报错。如果这不是你想要的,请详细说明,因为我不明白。
    猜你喜欢
    • 2012-03-22
    • 2017-09-13
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多