The new json/v2 package brings some much needed improvement to JSON in Go
- Go 1.25의 JSON/V2 패키지는 JSON 마샬링/언마샬링에 대한 개선을 제공하며, 특히 nil 슬라이스와 맵의 포맷팅 방식이 변경되었습니다. 🧰
- 기존에는 nil 슬라이스와 맵이 JSON null 값으로 렌더링되었지만, 이제는 각각 빈 배열([])과 빈 객체({})로 렌더링됩니다. 💡
- 이러한 변경은 Go API 개발 시 프론트엔드의 기대에 부합하는 데 도움이 되며, nil 슬라이스를 더 쉽게 처리할 수 있게 합니다. ➕
- JSON/V2 패키지는 JSON.Marshal 함수에 옵션을 추가하여 기존의 null 렌더링 동작을 유지할 수 있도록 합니다. ⚙️
- stringify numbers, emit zero struct fields, multi-line 과 같은 다양한 옵션을 통해 JSON 마샬링을 세밀하게 조정할 수 있습니다. ✏️
- Marshall funk 함수를 사용하면 커스텀 JSON 마샬러를 쉽게 정의하고 재사용할 수 있어 코드의 재사용성과 가독성을 높일 수 있습니다. ♻️
- Unmarshall funk 함수를 통해 커스텀 언마샬러를 정의하여 특정 문자열 값을 boolean 값으로 변환하는 등의 작업을 수행할 수 있습니다. 🔨
- 바이트 배열은 기본적으로 base64로 포맷되며, format 태그를 사용하여 다양한 타입(시간, 기간 등)의 포맷팅을 제어할 수 있습니다. 🔑
- Marshall write 및 Unmarshall read 함수는 IO.Writer 및 IO.Reader와 직접 작동하여 데이터 스트림 처리에 효율성을 제공합니다. 💾
- JSON text 패키지로 옮겨진 encoder 및 decoder 타입을 통해 기존의 encode 및 decode 메서드를 계속 사용할 수 있습니다. ➡️