使用非原始字段将 JSON 解码为 Protobuf
尝试解组包含非原始字段的 JSON 时会出现问题,例如在本例中,使用“encoding/json”库将数据放入 Protobuf 中。库的默认行为无法正确处理这些字段,导致它们被设置为 nil。
使用 Protobuf Encoding/Protojson
正确处理非- 原始字段,您应该使用 google.golang.org/protobuf/encoding/protojson 库。该库为 Protobuf 消息提供专门的解码函数。
将 JSON 解码为 Protobuf 的正确代码为:
req := &proto.JobCreateRequest{} err := protojson.Unmarshal(bytes, req)
此方法可确保 Data 字段正确反序列化和初始化。它递归地遍历 JSON 结构并尝试为 Protobuf 消息中定义的所有字段赋值。
以上是如何在 Go 中将带有非原始字段的 JSON 解码为 Protobuf?的详细内容。更多信息请关注PHP中文网其他相关文章!