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

无法使用 protobuf 生成空数组/golang 代码片段

无法使用 protobuf 生成空数组/golang 代码片段

Go
蝴蝶刀刀 2023-07-26 09:18:15
我们希望将一个具有一个属性的对象/结构作为 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}选项应该执行您想要的操作。


查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

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