Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用circe将Map[String,MyCaseClass]编码为Seq[String,String]_Scala_Circe - Fatal编程技术网

Scala 使用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

根据这个问题,如何使用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>]
我做到了以下几点,只是不确定我到底要怎么做

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
  }