필자는 사례 클래스와 JSON에서 필드의 이름을 다르게하고 싶습니다. 따라서 인코딩과 디코딩의 이름을 바꾸는 편안한 방법이 필요합니다.circe로 JSON 필드의 이름 바꾸기
누구에게 좋은 해결책이 있습니까?
필자는 사례 클래스와 JSON에서 필드의 이름을 다르게하고 싶습니다. 따라서 인코딩과 디코딩의 이름을 바꾸는 편안한 방법이 필요합니다.circe로 JSON 필드의 이름 바꾸기
누구에게 좋은 해결책이 있습니까?
인코더에서 mapJson
함수를 사용하여 일반 인코더에서 인코더를 파생시키고 필드 이름을 다시 매핑 할 수 있습니다.
그리고 디코더에서 prepare
함수를 사용하여 일반 디코더로 전달 된 JSON을 변형 할 수 있습니다.
처음부터 둘 다 쓸 수도 있지만, 상용구 톤이 될 수도 있습니다. 이러한 솔루션은 각각 몇 줄의 최대 줄이어야합니다.
val pimpedDecoder = deriveDecoder[PimpClass].prepare {
_.withFocus {
_.mapObject { x =>
val value = x("old-field")
value.map(x.add("new-field", _)).getOrElse(x)
}
}
}
: 여기