Arrays 如何将Play JSON对象与parser combinator JSONObject相结合?
我有以下json数组-Arrays 如何将Play JSON对象与parser combinator JSONObject相结合?,arrays,json,scala,playframework,parser-combinators,Arrays,Json,Scala,Playframework,Parser Combinators,我有以下json数组- import play.api.libs.json._ import scala.util.parsing.json.{JSON, JSONArray, JSONObject} 我想将以下json对象列表附加到此数组- val groupNameList = Json.arr( Json.obj( "groupName" -> "All", "maxSeverity" -> allGroupSeverityCount,
import play.api.libs.json._
import scala.util.parsing.json.{JSON, JSONArray, JSONObject}
我想将以下json对象列表附加到此数组-
val groupNameList = Json.arr(
Json.obj(
"groupName" -> "All",
"maxSeverity" -> allGroupSeverityCount,
"hostCount" -> (windowsCount + linuxCount + esxCount + networkCount + storageCount + awsLinuxCount + awsWindowsCount)),
Json.obj(
"groupName" -> "Private",
"maxSeverity" -> privateGroupSeverityCount,
"hostCount" -> (windowsCount + linuxCount + esxCount + networkCount + storageCount)),
Json.obj(
"groupName" -> "Public",
"maxSeverity" -> publicGroupSeverityCount,
"hostCount" -> (awsLinuxCount + awsWindowsCount))
)
我想将列表合并到数组中
如何使用scala将给定列表附加到json数组?在不同类型的json库之间转换对象最简单(但可能不是最有效)的方法是通过其json字符串表示
List({"groupName" : "group1", "maxSeverity" : 10, "hostCount" : 1, "members" : ["192.168.20.30", "192.168.20.31", "192.168.20.53", "192.168.20.50"]})
一旦有了列表[JsObject]
,就可以将其传递到JsArray
构造函数中,然后使用++
将两个JsArray
连接起来
将其放在一个示例中:
(o: JSONObject => Json.parse(o.toString()))
这是使用什么库?@Martin-我在编辑中添加了导入语句。请参考上一个代码段,其中显示了要附加的数据,该表达式的类型是什么?它看起来像Scala和JSON的奇怪组合。它是一个
列表[字符串]
<代码>列表[JsArray]?它是列表[JSONObject]啊,所以您正在尝试将JS对象从Scala的parser combinators库转换为正在使用的JS对象!这个问题现在有道理了。
import play.api.libs.json.{Json, JsArray}
import scala.util.parsing.json.JSONObject
object Foo {
val jsArray = Json.arr(
Json.obj("a" -> "b", "c" -> 2),
Json.obj("d" -> "e", "f" -> 3))
val list = List(
JSONObject(Map("g" -> "h", "i" -> 4)),
JSONObject(Map("j" -> "k", "m" -> 5))
)
def main(args: Array[String]): Unit = {
println(jsArray ++ JsArray(list.map(o => Json.parse(o.toString()))))
// [{"a":"b","c":2},{"d":"e","f":3},{"g":"h","i":4},{"j":"k","m":5}]
}
}