首页  >  文章  >  后端开发  >  如何在 Go 中将带有非原始字段的 JSON 解码为 Protobuf?

如何在 Go 中将带有非原始字段的 JSON 解码为 Protobuf?

DDD
DDD原创
2024-10-28 22:50:30764浏览

How to Decode a JSON with Non-Primitive Fields into Protobuf in Go?

使用非原始字段将 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn