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”:“PerfestpXI1ID”,“domainID”:“343RDFDGF4RGGFG”,“value”:“{}”},{“name”:“PerfestHoZSQR”,“domainID”:“343RDFDGF4RGGFG”,“value”:“{}”}]
预期:“值”:{}
[{“name”:“PerfestpXI1ID”,“domainID”:“343RDFDGF4RGGFG”,“Value”:{}},{“name”:“PerfestHoZSQR”,“domainID”:“343RDFDGF4RGGFG”,“Value”:{}}]
请建议一个解决方案
1条答案
按热度按时间oymdgrw71#
您给它一个
String
,所以它在JSON中创建一个字符串。您实际需要的是一个空词典,它是Scala中的Map
:通常,您应该为数据创建一个
case class
,并为该类创建一个定制的Writes
实现,这样就不必对每个值调用Json.toJson
。下面是如何仅使用单个
Json.toJson
调用进行转换:value
字段可以是标准类型,例如Boolean
或Double
。它也可以是另一个创建嵌套JSON的case class
,只要有一个类似的Json.format
行用于新类型。更复杂的JSON可以通过使用文档中描述的自定义
Writes
(和Reads
)实现来生成。