You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala构建Json时无法去除{}的双引号问题求助

在Scala Play Framework中生成空JSON对象的解决方案

当前代码将value字段设置为字符串"{}",导致生成的JSON中该字段值是带双引号的字符串形式,而实际需要的是空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":{}}]

解决方案

问题根源在于Json.toJson("{}")是将字符串转换为JSON字符串类型,自然会保留双引号。要生成空JSON对象,直接使用Play Json库提供的空对象构造器即可,有两种常用方式:

方式1:使用JsObject.empty

直接替换Json.toJson("{}")为JsObject.empty,它代表一个空的JSON对象:

import scala.util.Random
import play.api.libs.json._

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" -> JsObject.empty))}
val data2 = Json.toJson(data1)
println(data2)

方式2:使用Json.obj()

Json.obj()默认创建空JSON对象,效果和JsObject.empty一致:

import scala.util.Random
import play.api.libs.json._

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.obj()))}
val data2 = Json.toJson(data1)
println(data2)

两种方式都能生成符合预期的JSON输出,其中Json.obj()更直观,JsObject.empty则明确强调空对象的语义。


内容的提问来源于stack exchange,提问作者RUDRA GANESH SUBBARAYULU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:15:39