Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将Play JSON对象与parser combinator JSONObject相结合?_Arrays_Json_Scala_Playframework_Parser Combinators - Fatal编程技术网

Arrays 如何将Play JSON对象与parser combinator JSONObject相结合?

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,

我有以下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,
      "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}]
  }
}