[Scala] Circe의 HCursor을 Map으로 변환하기

Wan Geun Lee / May 28, 2020

Circe의 Json → Decoder에게 작업 위임

Scala
0
1
2
3
4
5
import io.circe.parser.{parse => circeParse}

val result = for {
  json <- circeParse(targetJson)
  result <- json.as[Map[String, Option[String]]]
} yield result

 

Decoder → HCursor → Map 순서로 진행한다.

Scala
0
1
2
3
4
5
6
7
8
import io.circe._

implicit val defaultEventDecoder: Decoder[Map[String, Option[String]]] = (c: HCursor) => {
  Right(c
    .keys
    .getOrElse(Iterable.empty).map(jsonProperty => {
    jsonProperty -> c.get[String](jsonProperty).toOption
  }).toMap)
}