- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用带有 json 代理的 google grpc。出于某种原因,我需要从 *.pb.go 文件中生成的结构中删除 omitempty
标记。
如果我有这样的原始消息
message Status {
int32 code = 1;
string message = 2;
}
生成的结构是这样的
type Status struct {
Code int32 `protobuf:"varint,1,opt,name=code" json:"code,omitempty"`
Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
}
但我需要从生成的结构中删除 omitempty
标记。我该怎么做?
最佳答案
如果您使用 grpc-gateway 并且需要在 json 编码期间提供默认值,则可以考虑在创建 servermux 时添加以下选项
gwmux := runtime.NewServeMux(runtime.WithMarshalerOption(runtime.MIMEWildcard, &runtime.JSONPb{OrigName: true, EmitDefaults: true}))
在 grpc-gateway 之外,如果你想编码你的 protocul 缓冲区消息,请使用 github.com/golang/protobuf/jsonpb
包而不是 encoding/json
func sendProtoMessage(resp proto.Message, w http.ResponseWriter) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
m := jsonpb.Marshaler{EmitDefaults: true}
m.Marshal(w, resp) // You should check for errors here
}
关于golang protobuf 从生成的 json 标签中删除 omitempty 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34716238/
有什么方法可以强制omitempty对于结构中的所有字段 没有 针对每个字段明确指定它? type Item struct { Name string `json:"item,omit
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我很好奇 omit empty 的用例是什么: type Example struct { ID string `json:",omitempty"` Name
我正在尝试为 Alfred 2 应用程序生成 XML。看起来有点像这样: My Thing My Other Thing
在我的网络服务中,我有一个模型: // Comment struct type Comment struct { Owner UserObject `json:
我正在使用返回 XML 的 REST API 并尝试解码 XML,但我遇到的问题似乎是 omitempty不管用。这是一个工作 XML 文件的示例: Firstname
如果 null sql.NullString 无效,应该如何不呈现它? - http://play.golang.org/p/pzSWS9vE0J 它似乎不能与 omitempty struct 标签
尝试 json Marshal 包含 2 个时间字段的结构。但我只希望该字段具有时间值(value)。所以我正在使用 json:",omitempty" 但它不起作用。 我可以将 Date 值设置为什
下面的代码是解释。我可以使用非简单类型的唯一方法是使该类型成为指针。 是否有不使用指针的替代解决方案? 代码不工作: type Foo struct { Bar Bar `json:"bar,
我正在使用带有 json 代理的 google grpc。出于某种原因,我需要从 *.pb.go 文件中生成的结构中删除 omitempty 标记。 如果我有这样的原始消息 message Statu
当将一个结构编码为 JSON 时,我可以将一个变量分配给它对应的“空值”,并且即使在使用 omitempty 时仍然传递它,但是我无法在嵌套结构中获得相同的结果,因为尽管它被省略了作为一个指针。这可能
我试图省略 nil 接口(interface)值 package main import ( "fmt" "encoding/json" ) type MyStruct struct{
请看下面。 https://play.golang.org/p/HXrqLqYIgz 我的期望值是: {"Byte2":0,"Name":"bob"} 但实际: {"ByteArray":[0,0,0
我正在处理一个优惠券表单,其中有一些可选字段。 简介: 所有表单字段值都以 JSON 格式接收并映射到 Golang 结构中。在结构中,我为每个字段添加了一个“omitempty”标志。因此只有那些具
我是一名优秀的程序员,十分优秀!