如何从 Scala ArrayBuffer 创建 json 字符串

How to create json string from scala ArrayBuffer

我已经从 for 循环内部创建了一个 ArrayBuffer。 现在我想用同一个 ArrayBuffer

创建 json 字符串

下面是我用来创建数组缓冲区的代码 val res=new ArrayBuffer[ArrayBuffer[_>:Any]]

`df =
+---+---+
| _1| _2|
+---+---+
|  1|  5|
|  2| 57|
+---+---+



df.collect.foreach(x=> {
  res += ArrayBuffer(x(0), x(1))
})

需要低于 json 来自 ArrayBuffer 的动态字符串而不低于硬编码数组值

val str = "head"

val cur  = """{"%s":{"%s":"%s","%s":"%s"}}""".format(str,res(0)(0),res(0)(1),res(1)(0),res(1)(1))

预期输出应低于基于 ArrayBuffer 大小的动态输出。列将为 2,但行数可以增加或减少。

Array Buffer is like this --> ArrayBuffer(ArrayBuffer(1, 5), ArrayBuffer(2, 57)) 

预计Json

{"head":{"1":"5","2":"57"}}

我建议您使用 Json 序列化程序。对我来说最简单的是 play-json.

您可以像这样将它添加到您的 sbt 中:

libraryDependencies += "com.typesafe.play" %% "play-json" % "2.9.2"

https://mvnrepository.com/artifact/com.typesafe.play/play-json

那么就很简单了

   // convert to a list of tuple
   val body: ArrayBuffer[(String, JsValue)] = res.map(e => (e.head.toString, Json.toJson(e(1))))
  
   print(Json.toJson(Json.obj({"head" -> JsObject(list)})))

这里有更多例子:https://www.playframework.com/documentation/2.8.x/ScalaJson