我從 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))
})
需要動態地從 ArrayBuffer 上方的 json 字串下方,而不需要低于硬編碼的陣列值
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"}}
uj5u.com熱心網友回復:
我建議您使用 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/412152.html
標籤:
