如何解组字符串列表?
类似的东西:
// 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值
答案 0 :(得分:2)
没有对应于给定JSON的协议缓冲区架构。协议缓冲区中的JSON支持实际上旨在为现有协议缓冲区消息定义JSON序列化。您不能将协议缓冲区用作任意JSON的架构,它根本不是为了做到这一点而设计的。
特别是,协议缓冲区使您可以将数组定义为重复字段,但是字段类型必须具有某种非数组类型,例如消息,基元或枚举。
您能做的最好的就是更改架构:
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。