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

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

但缺点:低效。

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

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

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

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

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

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

© 2021 V2EX