Scala 使用circe将Map[String,MyCaseClass]编码为Seq[String,String]
根据这个问题,如何使用circe将Map[String,MyCaseClass]编码为Seq[String,String] 型号:Scala 使用circe将Map[String,MyCaseClass]编码为Seq[String,String],scala,circe,Scala,Circe,根据这个问题,如何使用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", Ma
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>]
我做到了以下几点,只是不确定我到底要怎么做
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
}
}
这项工作:
implicit val encodeCollection: Encoder[Map[String, MyCaseClass]] = (collection: Map[String, MyCaseClass]) => {
collection.toList.
map(collection => (collection._1, collection._2.enabled)).
map(collection => Json.obj(
("name", collection._1.asJson),
("enabled", collection._2.asJson)
)).asJson
}
implicit val encodeCollection: Encoder[Map[String, MyCaseClass]] = (collection: Map[String, MyCaseClass]) => {
collection.toList.
map(collection => (collection._1, collection._2.enabled)).
map(collection => Json.obj(
("name", collection._1.asJson),
("enabled", collection._2.asJson)
)).asJson
}