有没有哪种编码格式,高效、兼容性好、支持 go 自定义序列化和反序列化?

2023 年 5 月 3 日
 craftx
目前服务的 rpc ,都是 json rpc.
优点自然是兼容性好、一些开源结构(比如 shopspring/decimal )都自带 json 支持。
如果真的遇到奇葩的,还可以自定义序列化和反序列化。

但缺点:低效。

找替换的话,首先想到的是 protobuf 。高效是高效,无奈使用不便,兼容性是个大问题。比如时间,就不能直接 time.Time 。

看大家有没有好的替代推荐。
3223 次点击
所在节点    Go 编程语言
12 条回复
fumeboy
2023 年 5 月 3 日
JSON with bytedance/sonic
joesonw
2023 年 5 月 3 日
protobuf 很方便写自己的 protoc-gen 插件来生成各种自己需要的代码
这里是一个很简单的实现作为参考,https://github.com/joesonw/hrpc
lovelylain
2023 年 5 月 3 日
json 就没有 protobuf 的
lovelylain
2023 年 5 月 3 日
json 就没有你所列的 protobuf 的缺点了吗?比如时间直接 time.Time 。json 相比 protobuf 除了低效,连 bytes 都不支持,pb 除了序列化以后没有可读性,其他方面不至于不如 json 呀。
hahadaxigua834
2023 年 5 月 3 日
duke807
2023 年 5 月 3 日
mesgpack
duke807
2023 年 5 月 3 日
msgpack
wheeler
2023 年 5 月 3 日
@lovelylain #4 go 里面 time 不是默认 rfc3339 格式吗?另外 bytes 也是直接 base64 。https://pkg.go.dev/encoding/json#Marshal
artnowben
2023 年 5 月 3 日
看看 brpc 能不能满足需求
patrickyoung
2023 年 5 月 3 日
Gob 能用不?但是问题是,需要注意反序列化不受信任的第三方数据带来的安全问题。
lysS
2023 年 5 月 4 日
json 可以自定义序列化啊,struct 实现两个方法就可以了。这里很容易死循环,要定义个类型别名
firstep
2023 年 8 月 27 日
看过各个序列化的性能对比,最终选 msgpack

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/936955

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX