问题描述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()了。
这种方式很方便的,建议使用。
- 1 回答
- 0 关注
- 1249 浏览
添加回答
举报
0/150
提交
取消