Go 1.27, 새 JSON API 정식 출시
원제: A new Go API for JSON
왜 중요한가
Go의 핵심 JSON 패키지가 15년 만에 보안·표준 준수 측면에서 실질적으로 강화돼, 수많은 Go 기반 서버·API의 안정성에 직접 영향을 준다.
Go 팀은 2026년 11월 4일, 15년 만의 대규모 JSON API 개편 결과물인 `encoding/json/v2`와 `encoding/json/jsontext` 패키지를 Go 1.27에서 정식 공개했다. 기존 `encoding/json`의 잘못된 UTF-8 허용, 중복 키 처리 취약점 등 오랜 결함을 수정한 안정화 버전이다.
Go 표준 라이브러리의 `encoding/json`은 Go 1.0 이전부터 존재해 온 패키지다. 15년 넘게 쓰이면서 한계도 쌓였고, Go 팀은 작년부터 실험적 API로 개편 작업을 공개해 왔다. 이번 Go 1.27에서 그 결과물이 `encoding/json/v2`와 `encoding/json/jsontext`로 정식 출시됐다.
핵심 변경점은 세 가지다. 첫째, 유효하지 않은 UTF-8 입력을 기존처럼 조용히 허용하는 대신 오류를 반환한다. 최신 인터넷 표준 RFC 8259는 유효한 UTF-8을 요구하는데, 기존 구현은 이를 무시해 하위 처리 단계에서 데이터 손상을 유발할 수 있었다. 둘째, JSON 객체 내 중복 키 처리가 엄격해진다. RFC 8259는 중복 키에 대한 처리 방식을 명시하지 않아 구현마다 해석이 달랐고, CVE-2017-12635처럼 보안 취약점으로 악용된 사례도 있다. 세 번째로 전반적인 JSON 문법 검사가 강화돼, 두 구현체가 동일한 JSON 값을 다르게 해석하는 상황을 줄인다.
이 패키지는 Michael Pratt, Joe Tsai, Daniel Martí를 포함한 7명의 Go 팀원이 공동 개발했으며, 기존 `encoding/json`의 마샬링·언마샬링 유연성은 그대로 유지하면서 오래된 결함을 수정하는 데 초점을 맞췄다.