2016-10-28 4 views
1

필자는 사례 클래스와 JSON에서 필드의 이름을 다르게하고 싶습니다. 따라서 인코딩과 디코딩의 이름을 바꾸는 편안한 방법이 필요합니다.circe로 JSON 필드의 이름 바꾸기

누구에게 좋은 해결책이 있습니까?

답변

0

인코더에서 mapJson 함수를 사용하여 일반 인코더에서 인코더를 파생시키고 필드 이름을 다시 매핑 할 수 있습니다.

그리고 디코더에서 prepare 함수를 사용하여 일반 디코더로 전달 된 JSON을 변형 할 수 있습니다.

처음부터 둘 다 쓸 수도 있지만, 상용구 톤이 될 수도 있습니다. 이러한 솔루션은 각각 몇 줄의 최대 줄이어야합니다.

val pimpedDecoder = deriveDecoder[PimpClass].prepare { 
    _.withFocus { 
     _.mapObject { x => 
     val value = x("old-field") 
     value.map(x.add("new-field", _)).getOrElse(x) 
     } 
    } 
    } 
: 여기
0

(이것은 기존의 필드를 제거하지 않습니다 때문에 자세한 비트) 디코더의 코드 샘플입니다