我們希望將一個具有一個屬性的對象/結構作為 golang 中的空列表/數組/切片返回給客戶端(瀏覽器)。從 go 代碼中,我們返回 len=0 和capacity=0 的空切片,但是通過 protobuf 這個鍵被刪除或設置為 nil 并被刪除。原始緩沖區代碼syntax = "proto3";package version1;message ToDo {? ? ?int64 id = 1 ;? ? ?string title = 2;}message ReadAllResponse{? ? ?repeated? ?ToDo? toDos = 1 ;}戈蘭代碼:list := make([]*version1.ToDo, 0) //[]*version1.ToDo{}output:= version1.ReadAllResponse{? ? ? ? ToDos: list,? ? ? ? Api:? ?"v1",? ? }我得到的實際輸出是, {api: "v1"}但預期應該是{api: "v1",todos:[]}請幫助/建議我們修復 protobuf 或 golang 語法。
1 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
當grpc-gateway使用 jsonpb 序列化器將 proto 結構序列化為 json時,您的數組字段會丟失。
幸運的是,網關公開了一種在設置網關時配置 jsonpb 序列化器的方法:
mux?:=?runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard,?&runtime.JSONPb{?EmitDefaults:true}))
該?&runtime.JSONPb{ EmitDefaults:true}
選項應該執行您想要的操作。
- 1 回答
- 0 關注
- 283 瀏覽
添加回答
舉報
0/150
提交
取消