Go 1.27 : une nouvelle API JSON stable

Original : A new Go API for JSON

Pourquoi c'est important

Une API JSON plus stricte réduit les risques de vulnérabilités liées à l'ambiguïté du format.

Le package encoding/json/v2 est officiellement stable dans Go 1.27. Après plus de 15 ans d'existence, l'API historique cède la place à une version corrigeant des failles de comportement et de sécurité documentées.

Go embarque le support JSON dans sa bibliothèque standard depuis avant la version 1.0. Après 15 ans et de nombreuses limitations identifiées, l'équipe Go publie encoding/json/v2 et encoding/json/jsontext en version stable avec Go 1.27.

L'ancienne API souffrait de plusieurs défauts concrets. Elle acceptait silencieusement de l'UTF-8 invalide, contrairement à la norme RFC 8259 — ouvrant la voie à une corruption silencieuse des données. Elle tolérait aussi les objets JSON avec des clés dupliquées, une ambiguïté exploitée dans des contextes de sécurité, notamment dans la CVE-2017-12635.

La nouvelle API adopte un comportement plus strict par défaut : rejet de l'UTF-8 invalide, traitement déterministe des noms dupliqués. Ces choix alignent Go sur les interprétations modernes des standards JSON, réduisant les risques d'incohérence entre implémentations.

Le projet a été introduit l'an dernier comme expérimental, puis affiné sur la base des retours de la communauté. Les packages encoding/json/v2 et encoding/json/jsontext sont désormais disponibles en production. L'équipe, composée notamment de Joe Tsai, Daniel Martí et Damien Neil, maintient une compatibilité pensée pour faciliter la migration progressive depuis l'ancienne API.

Source

go.dev — Lire l'original →