【发布时间】:2018-12-24 23:25:42
【问题描述】:
根据问题,如何使用 circe 将 Map[String, MyCaseClass] 编码为 Seq[String, String]?
型号:
case class MyCaseClass(name: String, enabled: Boolean)
case class Parent(parentName: String,
collection: Map[String, MyCaseClass])
Parent(
"parent-name",
Map(
"external-name-a", MyCaseClass("internal-name-a", true),
"external-name-b", MyCaseClass("internal-name-b", false)
)
)
我想把它编码成:
Seq[name = <map key>, enabled = <boolean value from MyCaseClass>]
例如:
{ ...
collection: [
{
name: "external-name-a",
enabled: true
},
{
name: "external-name-a",
enabled: false
}
]
...
}
我得到了以下,只是不确定如何做我想做的事
object Parent {
implicit val encodeParent: Encoder[Parent] = (parent: Parent) => {
Json.obj(
("name", parent.name.asJson),
("collection", parent.collection.asJson),
)
}
implicit val encodeCollection: Encoder[Map[String, MyCaseClass]] = (collection: Map[String, MyCaseClass]) => {
//collection.toList.map((externalName: String, myCaseClass: MyCaseClass) => (externalName, myCaseClass.enabled)).asJson
}
}
【问题讨论】: