gpt4 book ai didi

go - ProtoBuf 解码 key : [ ["abc", "123"], ["123"]]

转载 作者:数据小太阳 更新时间:2023-10-29 03:02:59 29 4
gpt4 key购买 nike

如何解码字符串列表?

类似于:

// Tried repeated string ... ListOfString.... repeated list of string
message Link {
string id = 1;
string names = 2;
}

jsonstr := `
{
"names": [ ["Bill", "Susan"], ["Jim", "James"] ]
}`

// go code
jsonpb.Unmarshal(jsonstr, &pb.Link)

使用 jsonpb 解码:https://godoc.org/github.com/golang/protobuf/jsonpb

获取 json:无法将数组解码为 Go 值

最佳答案

没有对应给定 JSON 的 Protocol Buffer 模式。 Protocol Buffers 中的 JSON 支持实际上是为了为现有的 Protocol Buffer 消息定义 JSON 序列化。您不能将 Protocol Buffers 用作任意 JSON 的模式,它根本就不是为这样做而设计的。

特别是,Protocol Buffers 允许您将数组定义为重复字段,但字段类型必须具有一些非数组类型,例如消息、原始类型或枚举。

您能做的最好的事情就是更改模式:

message Name {
repeated string name = 1;
}

message Link {
string id = 1;
repeated string names = 2;
}

然后您可以更改 JSON 以匹配:

const jsonStr = `
{
"names": [
{ "name": ["Bill", "Susan"] },
{ "name": ["Jim", "James"] }
]
}
`

func main() {
var link pb.Link
if err := jsonpb.UnmarshalString(jsonStr, &link); err != nil {
fmt.Println("Error:", err)
}
}

如果您的 JSON 格式是一个硬性要求,那么您必须以其他方式反序列化 JSON。

关于go - ProtoBuf 解码 key : [ ["abc", "123"], ["123"]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50979817/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com