登录
首页 >  Golang >  Go问答

golang如何将json 解组为 protobuf 结构字段?

来源:Golang技术栈

时间:2023-03-05 18:37:43 446浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《golang如何将json 解组为 protobuf 结构字段?》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

golang如何将json 解组为 protobuf 结构字段?

正确答案

要将JSON解组为Protobuf结构字段,你需要使用Protobuf库中的Unmarshal方法将JSON解码为Protobuf消息。以下是一个简单的示例,假设你已经定义了一个名为MyMessage的Protobuf消息:

import (
    "encoding/json"
    "github.com/golang/protobuf/jsonpb"
    "github.com/golang/protobuf/proto"
    "yourpackage/mymessage"
)

func main() {
    // 假设你有一个包含 JSON 数据的字节数组
    jsonBytes := []byte(`{"field1":"value1", "field2": 123}`)

    // 创建一个新的 Protobuf 消息结构体
    msg := &mymessage.MyMessage{}

    // 使用 jsonpb.Unmarshal 将 JSON 解码到 Protobuf 消息中
    if err := jsonpb.Unmarshal(bytes.NewReader(jsonBytes), msg); err != nil {
        panic(err)
    }

    // 现在,你可以访问解码后的 Protobuf 消息中的字段
    field1 := msg.Field1
    field2 := msg.Field2
}

在此示例中,我们使用了jsonpb.Unmarshal方法将JSON解码为Protobuf消息。该方法需要一个io.Reader作为输入,因此我们将字节数组包装在一个bytes.Reader中。解码完成后,我们可以直接访问解码后的消息中的字段。

需要注意的是,jsonpb.Unmarshal返回的错误类型是proto.Error,因此你可以通过调用proto.MessageNameproto.IsEnumValue等函数来确定错误的类型。

到这里,我们也就讲完了《golang如何将json 解组为 protobuf 结构字段?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表