scala - 在 Play Framework 中将 JsObject 追加/添加到 JsArray

标签 scala playframework playframework-2.3 json

我是 Play Framework 的新手,我需要 append/add JsObject 元素到 JsArray

目标(我需要的)

 {"s_no":1,"s_name":"one",
    ,"sub_s":  [{"sub_s_no":1,"sub_s_name":"one_sub","sub_s_desc":"one_sub"},{"sub_s_no":2,"sub_s_name":"two_sub","sub_s_desc":"two_sub"}]},
{"s_no":2,"s_name":"two","sub_s":[{"sub_s_no":2,"sub_s_name":"two_sub","sub_s_desc":"two_sub"},
    {"sub_s_no":3,"sub_s_name":"three_sub","sub_s_desc":"three_sub"}]}

我得到了什么

JsObject 1

{"s_no":1,"s_name":"one",
,"sub_s":[{"sub_s_no":1,"sub_s_name":"one_sub","sub_s_desc":"one_sub"},{"sub_s_no":2,"sub_s_name":"two_sub","sub_s_desc":"two_sub"}]}

JsObject 2

{"s_no":2,"s_name":"two","sub_s":[{"sub_s_no":2,"sub_s_name":"two_sub","sub_s_desc":"two_sub"},
{"sub_s_no":3,"sub_s_name":"three_sub","sub_s_desc":"three_sub"}]}

我有两个 JsObject 并且会得到两个以上,我需要将所有 JsObjects add/appendJsArray

我尝试使用 .+:,.append 方法给出空的 JsArray

最佳答案

之所以得到一个空的JsArray是因为JsArray是不可变的,所以原来的JsArray不会被修改。您需要将追加的结果分配到一个新变量,以便它按您期望的方式工作。

val jsonString1 = """{"s_no":1,"sub_s":[1,2]}"""
val jsonString2 = """{"s_no":2,"sub_s":[3,4]}"""

val jsObj1 = Json.parse(jsonString1)
val jsObj2 = Json.parse(jsonString2)

val emptyArray = Json.arr()
val filledArray = emptyArray :+ obj1 :+ obj2

Json.prettyPrint(emptyArray)
Json.prettyPrint(filledArray)

还有一些 REPL 输出

> filledArray: play.api.libs.json.JsArray = [{"s_no":1,"s_name":"one","sub_s":[{"sub_s_no":1,"sub_s_name":"one_sub","sub_s_desc":"one_sub"},{"sub_s_no":2,"sub_s_name":"two_sub","sub_s_desc":"two_sub"}]},{"s_no":2,"s_name":"two","sub_s":[{"sub_s_no":2,"sub_s_name":"two_sub","sub_s_desc":"two_sub"},{"sub_s_no":3,"sub_s_name":"three_sub","sub_s_desc":"three_sub"}]}]
> // pretty print of the empty array
> res1: String = [ ]
> // pretty print of the filled array
> res2: String = [ {"s_no" : 1 ...}, {"s_no" : 2 ...} ]

关于scala - 在 Play Framework 中将 JsObject 追加/添加到 JsArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33132143/

相关文章:

scala - 将未经身份验证的请求发送到不同的操作路由

java - Akka 和 Play,与非 Controller 库集成

mysql - Play Framework 2.3 - 无法连接到远程数据库 Linux (Play) -> Win 7 (MySQL)

linux - 在 scala shell 上使用向上箭头进行历史/部分搜索

scala - 使用 Scala 在 Spark 中以列值为条件的广播 map 上执行查找

scala - 寻找游戏中 Json 的隐含值

java - Play框架和图像缓存

css - 更少的资源不编译 Play 2.3.7

java - Scala 重载方法

scala - 函数组合,累积中间结果