Scala - 構建 Json 時無法洗掉“{}”大括號的雙引號
import scala.util.Random
import math.Ordered.orderingToOrdered
import math.Ordering.Implicits.infixOrderingOps
import play.api.libs.json._
import play.api.libs.json.Writes
import play.api.libs.json.Json.JsValueWrapper
val data1 = (1 to 2)
.map {r => Json.toJson(Map(
"name" -> Json.toJson(s"Perftest${Random.alphanumeric.take(6).mkString}"),
"domainId"->Json.toJson("343RDFDGF4RGGFG"),
"value" ->Json.toJson("{}")))}
val data2 = Json.toJson(data1)
println(data2)
結果:[{"name":"PerftestpXI1ID","domainId":"343RDFDGF4RGGFG", "value":"{}" },{"name":"PerftestHoZSQR","domainId":"343RDFDGF4RGGFG", "value" :"{}" }]
預期:“價值”:{}
[{"name":"PerftestpXI1ID","domainId":"343RDFDGF4RGGFG", "value":{} },{"name":"PerftestHoZSQR","domainId":"343RDFDGF4RGGFG", "value":{} } ]
請提出解決方案
uj5u.com熱心網友回復:
你給它一個String所以它在 J??SON 中創建一個字串。你真正想要的是一個空字典,它是MapScala 中的:
val data1 = (1 to 2)
.map {r => Json.toJson(Map(
"name" -> Json.toJson(s"Perftest${Random.alphanumeric.take(6).mkString}"),
"domainId"->Json.toJson("343RDFDGF4RGGFG"),
"value" ->Json.toJson(Map.empty[String, String])))}
更一般地,您應該case class為資料創建一個并Writes為該類創建一個自定義實作,這樣您就不必呼叫Json.toJson每個值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/515728.html
