問題描述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 關注
- 1277 瀏覽
添加回答
舉報
0/150
提交
取消