为了账号安全,请及时绑定邮箱和手机立即绑定

protobuf3的坑

protobuf3的坑

哈士奇WWW 2018-10-23 22:22:29
问题描述protobuf由2升到3之后有个很烦人的坑:当我返回的值是默认值时,protobuf会自动帮我忽略这个字段相关代码message UserInfo{    bool IsAuth = 1;    string Name = 2; }如果IsAuth是false的时候返回的就是{"Name":"xxxx"}如果IsAuth是true时,返回的是{"IsAuth":true,"Name":"xxxxx"}类似的问题还有很多int32=0,string=""的时候都会忽略字段问题来了我们跟前端的交互用的是jsonrpc,这个丢失的字段让前端处理起来不是很友好,不知道有没有什么办法解决这种问题?
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

有更好的解决办法的。
proto生成的文件还是最好不要去修改它,存在即为合理。
可以去看看一下这个。

var pbMarshaler jsonpb.Marshalerfunc init() {
    pbMarshaler = jsonpb.Marshaler{        EmitDefaults: true,        OrigName:     true,        EnumsAsInts:  true,
    }}

有Marshal方法 可以把pb对象读到buffer,剩下的就是 buffer.Bytes()了。
这种方式很方便的,建议使用。


查看完整回答
反对 回复 2018-10-23
  • 1 回答
  • 0 关注
  • 1249 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信