在scala / play框架中构造一个Json文件

时间:2013-05-13 12:05:18

标签: scala playframework

我正在使用Scala的Play框架,我需要提供一个看起来像这样的输入: :

{
  id: "node37",
  name: "3.7",
  data: {},
  children:[]
},

如何使用json获取该格式?以下是Play框架网站的示例:

val JsonObject= Json.obj(
  "users" -> Json.arr(
    Json.obj(
      "id" -> "bob",
      "name" -> 31,
      "data" -> JsNull,
      "children" ->JsNull
    ),
    Json.obj(
      "id" -> "kiki",
      "name" -> 25,
      "data" -> JsNull,
      "children" ->JsNull
    )
  )
)

2 个答案:

答案 0 :(得分:1)

scala> import play.api.libs.json._
import play.api.libs.json._

scala> Json.obj("id" -> "node37", "name" -> "3.7", "data" -> Json.obj(), "children" -> Json.arr())
res4: play.api.libs.json.JsObject = {"id":"node37","name":"3.7","data":{},"children":[]}

这是你需要的吗?

答案 1 :(得分:1)

您可能还希望使用Json库宏将案例类转换为Json

import play.api.libs.json._

case class MyObject(id: String, name: String, data: JsObject = Json.obj(), children: Seq[MyObject])


implicit val myObjectFormat = Json.format[MyObject]

然后在您想要MyObject案例类的Json版本时,您可以运行:

val obj = MyObject("node37", "3.7", Json.obj(), Seq())
val jsonObj = Json.toJson(obj)

如果你有一个返回json的Controller动作,你可以将它包装在Ok结果

Ok(jsonObj)

客户端会看到正确的 Content-Type 标题为" application / json"

您可以在Docs

中找到有关Json Library和宏的更多信息