将JsArray解析为case类,而不是通过引用Json键来详细说明

时间:2014-02-25 12:38:38

标签: scala playframework-2.0

我有一个存储在Mongo中的Json对象,如下所示。它是“扁平的”,即没有嵌套元素:

{
   "key1" : "val1",
   "key2" : "val2",
    ....
   "keyn" : "valn"

}

我把它作为JsArray取出来了。我还有一个案例类:

case class IndividualProduct(key1: String, key2: String, ... , key_n: String) {}

总共Json将拥有超过40个键/值对。是否有一种简洁的方法可以将JsArray解析为case类而无需详细地引用键?

提前感谢 - 未来[谢谢]

2 个答案:

答案 0 :(得分:1)

import play.api.libs.json._
implicit val reader = Json.reads[IndividualProduct]
val ip = Json.fromJson[IndividualProduct](fetchedJsObj)

答案 1 :(得分:0)

这不是JsArray,而是Map[String, String]。 所以,如果你有一个像你所展示的那样的json,那么这是可行的:

val json = getYourJsonFromDB()
val kv = json.as[Map[String, String]]

现在你可以做这样的事情:

val valueForKey13 = kv.get("key13") //returns an Option[String]

希望这有帮助