簡體   English   中英

將Json轉換為scala對象

[英]Convert Json to scala object

我有以下Json字符串:

{
  "references": {
    "configuratorId": "conf id",
    "seekId": "seekid",
    "hsId": "hsid",
    "fpId": "fpid"
  }
}

我想在我的Rest API Controller中創建一個對象。

編碼:

case class References(configuratorId: Option[String], seekId: Option[String], hsId: Option[String], fpId: Option[String]) {}

格式化程序:

trait ProductFormats extends ErrorFormats {
  implicit val referencesFormat = Json.format[References]

implicit val referenceFormat = new Format[References]{
def writes(item: References):JsValue = {
  Json.obj(
      "configuratorId" -> item.configuratorId,
      "seekId" -> item.seekId,
      "hsId" -> item.hsId,
      "fpId" -> item.fpId
      )
}
def reads(json: JsValue): JsResult[References] = 
JsSuccess(new References(
    (json \ "configuratorId").as[Option[String]],
    (json \ "seekId").as[Option[String]],
    (json \ "hsId").as[Option[String]],
    (json \ "fpId").as[Option[String]]
    ))
    }

我控制器中的代碼:

def addProducts(lang: String, t: String) = Action {
  request =>
    request.body.asJson.map {
      json =>
        val req = json.as[References]
        println(req.configuratorId.getOrElse("it was empty !!"))
        Ok(Json.toJson((req)))
    }.getOrElse {
      println("Bad json:" + request.body.asText.getOrElse("No data in body"))
      BadRequest("Incorrect json data")
    }
}

該對象是空的值。我想我的讀取是錯誤的 - 但我無法弄清楚為什么。

謝謝!!

您應該將控制器中的代碼更改為:

val req = (json \ "references").as[References]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM