4

我正在使用带有 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
    )
  )
)
4

2 回答 2

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":[]}

这是你需要的吗?

于 2013-05-13T12:40:35.910 回答
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”

您可以在文档中找到有关 Json 库和宏的更多信息

于 2014-07-18T20:29:37.537 回答