有没有哪种编码格式,高效、兼容性好、支持 go 自定义序列化和反序列化? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
craftx
V2EX    Go 编程语言

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

  •  
  •   craftx 2023 年 5 月 3 日 2981 次点击
    这是一个创建于 1071 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前服务的 rpc ,都是 json rpc.
    优点自然是兼容性好、一些开源结构(比如 shopspring/decimal )都自带 json 支持。
    如果真的遇到奇葩的,还可以自定义序列化和反序列化。

    但缺点:低效。

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

    看大家有没有好的替代推荐。
    12 条回复    2023-08-27 11:25:41 +08:00
    fumeboy
        1
    fumeboy  
       2023 年 5 月 3 日
    JSON with bytedance/sonic
    joesonw
        2
    joesonw  
       2023 年 5 月 3 日 via iPhone
    protobuf 很方便写自己的 protoc-gen 插件来生成各种自己需要的代码
    这里是一个很简单的实现作为参考,https://github.com/joesonw/hrpc
    lovelylain
        3
    lovelylain  
       2023 年 5 月 3 日 via Android
    json 就没有 protobuf 的
    lovelylain
        4
    lovelylain  
       2023 年 5 月 3 日 via Android
    json 就没有你所列的 protobuf 的缺点了吗?比如时间直接 time.Time 。json 相比 protobuf 除了低效,连 bytes 都不支持,pb 除了序列化以后没有可读性,其他方面不至于不如 json 呀。
    hahadaxigua834
        5
    hahadaxigua834  
       2023 年 5 月 3 日
    duke807
        6
    duke807  
       2023 年 5 月 3 日 via Android
    mesgpack
    duke807
        7
    duke807  
       2023 年 5 月 3 日 via Android
    msgpack
    wheeler
        8
    wheeler  
       2023 年 5 月 3 日 via iPhone
    @lovelylain #4 go 里面 time 不是默认 rfc3339 格式吗?另外 bytes 也是直接 base64 。https://pkg.go.dev/encoding/json#Marshal
    artnowben
        9
    artnowben  
       2023 年 5 月 3 日
    看看 brpc 能不能满足需求
    patrickyoung
        10
    patrickyoung  
       2023 年 5 月 3 日 via iPhone
    Gob 能用不?但是问题是,需要注意反序列化不受信任的第三方数据带来的安全问题。
    lysS
        11
    lysS  
       2023 年 5 月 4 日
    json 可以自定义序列化啊,struct 实现两个方法就可以了。这里很容易死循环,要定义个类型别名
    firstep
        12
    firstep  
       2023 年 8 月 27 日
    看过各个序列化的性能对比,最终选 msgpack
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4165 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 00:58 PVG 08:58 LAX 17:58 JFK 20:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86