比标准Json库好用——json-iterator
【前言】
最近,在研究高并发场景下的日志解析,使用传统的encoding/json库,实在拉跨,故找到一个高性能、内存占用低的json-iterator库。
适用场景:高并发、高流量的json编/解码
项目直达:https://github.com/json-iterator/go

json-iterator/go(jsoniter) 库优势主要体现在 两个核心维度
一是性能效率
二是内存分配优化
1. 解码(Decode)场景:速度与内存开销大幅度提升
- 速度极快:
jsoniter decode仅需 5623 ns/op,比std decode(标准库)快约 84%,比easyjson decode快约 33%; - 内存分配极少:
jsoniter decode仅 3 次内存分配/操作,与easyjson相当,远低于std的 99 次;且每次分配仅 160 B,内存开销与easyjson持平,大幅优于std的 1960 B。
2. 编码(Encode)场景:内存控制与速度的平衡
- 内存开销最低:
jsoniter encode仅 384 B/操作,比easyjson encode少约 33%,比std encode少约 46%; - 速度接近顶尖:
jsoniter encode速度(837 ns/op)与easyjson encode(883 ns/op)几乎持平,远快于std encode(2213 ns/op)。
使用方法
编码
import jsoniter "github.com/json-iterator/go"var json = jsoniter.ConfigCompatibleWithStandardLibrary
json.Marshal(&data)
解码
import jsoniter "github.com/json-iterator/go"var json = jsoniter.ConfigCompatibleWithStandardLibrary
json.Unmarshal(input, &data)
小结
- 极致性能:编解码速度远超 Go 标准库,解码速度在对比库中位列第一,编码速度与竞品持平;
- 内存友好:内存分配次数少、单分配字节数低,在高并发、大吞吐量场景下能有效减少 GC 压力,提升系统稳定性;
- 易用性:兼容 Go 标准库
encoding/json的 API 设计,迁移成本极低,可无缝替代标准库或其他 JSON 库。
小Tips
- ns/op含义:“纳秒每操作”(nanoseconds per operation)的缩写,常用于性能测试和基准测试中,表示完成单个操作所需的平均时间,单位为纳秒(1纳秒=10^-9秒)。
该指标用于衡量程序或算法的执行效率,数值越低表示性能越好。
