问题描述
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,这个丢失的字段让前端处理起来不是很友好,不知道有没有什么办法解决这种问题?
有更好的解决办法的。
proto生成的文件还是最好不要去修改它,存在即为合理。
可以去看看一下这个。
有Marshal方法 可以把pb对象读到buffer,剩下的就是 buffer.Bytes()了。
这种方式很方便的,建议使用。