小编Ste*_*ari的帖子

如何配置Circe以停止在编码的JSON中使用嵌套类名作为键名?

我正在尝试编码一个case类(其中一些属性也是case类),并且我将嵌套的case类名作为JSON中的键名。是否有一种简单的方法可以避免这种情况,而无需创建自定义编码器?嵌套类继承自密封特征。

我目前正在使用半自动推导。

以下工作表示例显示了我的问题:

case class A(foo: Int, bar: Sub)

sealed trait Sub
case class B(x: Int, y: Int) extends Sub
case class C(x: Int, y: Int, z: Int) extends Sub

import io.circe._, io.circe.generic.semiauto._
import io.circe.syntax._

implicit val bEncoder: Encoder[Sub] = deriveEncoder
implicit val aEncoder: Encoder[A] = deriveEncoder

A(123, B(8, 8)).asJson
A(456, C(8, 8, 8)).asJson
Run Code Online (Sandbox Code Playgroud)

而不是:

res0: io.circe.Json = {
  "foo" : 123,
  "bar" : {
    "x" : 8,
    "y" : 8
  }
}
res1: io.circe.Json = {
  "foo" : 456, …
Run Code Online (Sandbox Code Playgroud)

json scala case-class circe

6
推荐指数
1
解决办法
388
查看次数

标签 统计

case-class ×1

circe ×1

json ×1

scala ×1