Go 언어가 1.27 버전부터 `encoding/json/v2`와 `encoding/json/jsontext`라는 새로운 JSON API를 정식으로 선보입니다. 이는 지난 15년간 Go의 표준 라이브러리로 사용되어 온 기존 JSON 패키지의 여러 문제점을 해결하기 위해 약 6년간의 개발 과정을 거쳐 탄생했습니다. 특히, 모호한 입력 처리, 보안 취약점, 그리고 성능 제약 등의 고질적인 한계를 개선하는 데 중점을 두었습니다.
새로운 API는 JSON 구문 처리와 Go 값 변환을 분리하여 더욱 효율적인 스트리밍 방식을 도입했습니다. `jsontext` 패키지는 JSON 문법 처리를 담당하고, `json/v2`는 JSON 값과 Go 값 간의 의미적 변환을 처리합니다. 이로 인해 언마샬(Unmarshal) 성능이 벤치마크에서 최대 10배까지 향상되었으며, 마샬(Marshal) 성능도 기존과 비슷하거나 일부 경우 더 빨라졌습니다. 또한, 잘못된 UTF-8이나 중복 객체 이름 같은 모호한 입력을 오류로 처리하고, nil 슬라이스/맵을 빈 JSON 배열/객체로 직렬화하는 등 RFC 8259 표준을 엄격하게 준수하여 데이터 손상 및 보안 공격 위험을 줄였습니다.
이번 업데이트는 Go 생태계에 큰 영향을 미칠 것으로 예상됩니다. 기존 `encoding/json` 패키지는 계속 지원되므로 모든 애플리케이션이 즉시 이전할 필요는 없지만, 새로운 API는 향상된 성능과 안정성을 제공하며 점진적인 이전을 지원합니다. 개발자들은 호출 지점별로 새로운 API를 적용하거나, 기존 동작을 유지하면서 필요한 부분만 옵션으로 조정할 수 있습니다. 이는 특히 대규모 JSON 데이터를 처리하거나 보안이 중요한 애플리케이션에서 개발 효율성과 시스템 안정성을 크게 높이는 계기가 될 것입니다.