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)

Result: [{"name":"PerfestpXI1ID","domainID":"343RDFDGF4RGFG","value":"{}"},{"name":"PerfestHoZSQR","domainID":"343RDFDGF4RGFG","value":"{}"}]

Expected: "Value":{}

[{"name":"PerfestpXI1ID","domainID":"343RDFDGF4RGFG","value":{}},{"name":"PerfestHoZSQR","domainID":"343RDFDGF4RGFG","value":{}}]

请建议一个解决方案

推荐答案

您给它的分数是String,所以它在JSON中创建一个字符串.您实际需要的是一个空词典,在Scala中是Map:

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.

Json相关问答推荐

bash用jq获取第二条JSON记录

使用 jq 如何更改键的值?

Bicep脚本中如何设置弹性池的维护窗口?

遍历 JSON,检索父值

使用 jolt 将对象数组转换为数组

如何将 JSON 文本作为参数传递给 powershell?

使用 jq 获取特定键的所有父键

Kotlin Android Room 处理 Moshi TypeConverter 中的空对象列表

如何使用 React 从 NASA IMAGES API 中解构所需信息

Rails 控制器无需编码即可渲染 json

如何删除 django jsonfield 中的特定项目

避免 KeyError 的默认字典键

Flask 请求和 application/json 内容类型

android - 在 adb logcat 输出中格式化 json 字符串

JSON 使用 simplejson 序列化 Django 模型

如何将 MongoDB 查询转换为 JSON?

如何在 JAVA 中对 JSONArray 进行排序

使用 JSONArray 和 JSONObject 进行 Foreach

将 JSON 模式转换为 python 类

是否有一个 PHP 函数只在双引号而不是单引号中添加斜杠