Lobsters | 📄 原文链接 | 2026-11-06 收录

Go 1.27 的编码库 v2:把十五年的旧账一次还清

来源:go.dev — 2026-11

📋 概述

encoding/json 的问题不在于功能少,而在于语义已经焊进公开 API,受 Go 1 兼容承诺保护无法修改。Go 团队于是另开 encoding/json/v2 与底层的 encoding/json/jsontext:前者管语义,后者只管语法且完全不依赖反射。v2 把选项变成一等参数,提供真正流式的 MarshalWrite、UnmarshalRead 与 MarshalJSONTo、UnmarshalJSONFrom,并改掉大小写不敏感匹配、非法 UTF-8 静默通过、重复键、omitempty 等一堆坑。反序列化基准最高快 10 倍;v1 在底层就是用 v2 加一整套兼容选项实现的,所以两边能互操作、可以渐进迁移。

🔑 核心要点

💡 金句

我们想要的不只是让 v1 继续可用,而是保证 v1 与 v2 彼此兼容。
← 返回 Lobsters 首页