Play和JSON:如何将(String,JsValue)的序列转换为JsObject

j3d*_*j3d 4 json scala playframework

给定以下scala序列...

val numbers = Seq[(String, JsValue)](("one", JsNumber(1)), ("two", JsNumber(2)), ("three", JsNumber(3)))
Run Code Online (Sandbox Code Playgroud)

...我需要将其转换为以下JSON:

{
    "numbers": {
        "one": 1,
        "two": 2,
        "three": 3
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过了...

val js = Json.obj("numbers" -> Json.obj(numbers))
Run Code Online (Sandbox Code Playgroud)

...但是它不起作用,并且出现以下错误:

found:       Seq[(String, JsValue)]
required:    (String, JsValueWrapper)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

ser*_*jja 5

你足够亲密了。用这个:

val js = Json.obj("numbers" -> JsObject(numbers))
Run Code Online (Sandbox Code Playgroud)

输出:

js: play.api.libs.json.JsObject = {"numbers":{"one":1,"two":2,"three":3}}
Run Code Online (Sandbox Code Playgroud)

Json.obj是构造a的快捷方式JsObject,但在您的情况下并不是那么方便。