Go 1.27 incorpora por defecto el nuevo paquete encoding/json/v2 en su biblioteca estándar, con una API prácticamente idéntica a la del paquete original encoding/json, aunque no se trata de un reemplazo directo: difiere en aspectos como la validación Unicode y la sensibilidad a mayúsculas y minúsculas. Además, la API heredada se ha reimplementado sobre el nuevo motor, por lo que es posible elegir entre tres opciones: la implementación original (GOEXPERIMENT=nojsonv2), la API v1 sobre el backend v2 de Go 1.27 y la nueva json/v2.
Daniel Lemire ha comparado el rendimiento de las tres variantes en un Apple M4 Max y en un Intel Xeon Gold 6548N con Go 1.27.0, usando los documentos de prueba simdjson (twitter.json, canada.json y citm_catalog.json) y un núcleo (GOMAXPROCS=1), tomando la mediana de ocho ejecuciones. Al deserializar sobre any (interface{}), la API heredada con el nuevo motor supera a la original en twitter.json (de 172 a 203 MB/s) y en citm_catalog.json (de 186 a 241 MB/s), pero baja de 128 a 106 MB/s en canada.json. Al serializar, llega a duplicar la velocidad: de 198 a 374 MB/s en twitter.json. Con la nueva json/v2, la deserialización mejora entre 1,5x y 2,3x y la serialización entre 1,2x y 3x frente a la implementación original.
El panorama cambia con un esquema tipado: al serializar 10.000 estructuras pequeñas, la implementación original es más rápida que la combinación v1+v2, por lo que la ganancia neta de json/v2 ronda solo el 1,0x a 1,7x y, en el caso concreto probado, resulta alrededor de 1,5 veces más lenta.
