TwKit
正在载入
TwKit

Go 团队正式推出了 encoding/json/v2,这是 Go 诞生十五年以来,对核心包动得最大的一次手术。 老版 encoding/json 最大的硬… · @fishjar · TwKit

@fishjar

Go 团队正式推出了 encoding/json/v2,这是 Go 诞生十五年以来,对核心包动得最大的一次手术。 老版 encoding/json 最大的硬伤在于对 reflect.Value 的无节制依赖,每次序列化都在堆上疯狂触发小对象逃逸。更恶心的是 omitempty 的历史包袱:一个空的结构体或者零值时间,打上 omitempty 标签依然会被序列化出来,坑了无数做微服务接口联调的人。 v2 彻底重写了解析状态机。引入了零内存分配的流式编码器,支持原生处理 io.Reader 和 byte slice。针对零值判断增加了 omitzero 选项,把历史定义的歧义全部拆开。 在性能和向后兼容之间扯皮了整整五年,最后还是靠新开独立包才把这笔历史债务结清。 官方博客:https://go.dev/blog/jsonv2

曝光 7 · 评论 0 · 点赞 0 · 书签 0

查看原帖