[英]Anonymous struct in Protocol Buffer format
给定这样的Go结构:
type House struct {
Address string
Rooms []struct {
Name string
Windows int
Doors int
}
}
或等效的JSON表示形式:
{
"address": ""
"rooms": [
{
"name": ""
"windows": 0
"doors": 0
}
]
}
等效的协议缓冲区表示是什么?
这或多或少是我想做的(虽然不是有效的Proto语法):
message House {
string address = 1;
repeated message {
string name = 3;
int32 windows = 4;
int32 doors = 5;
} rooms = 2;
}
相反,这样做是有效的,但由于原始rooms
切片包含匿名对象,因此不能准确表示数据:
message House {
string address = 1;
repeated room rooms = 2;
}
message room {
string name = 1;
int32 windows = 2;
int32 doors = 3;
}
更新:我想我误解了消息声明的工作原理。 我给出的第二个示例应该足够,并且实际上不会干扰JSON解组。
为了实现所需的功能并摆脱匿名结构,我认为您应该在House中声明房间消息,然后将其分配为重复消息,如下所示:
message House {
message room {
string name = 1;
int32 windows = 2;
int32 doors = 3;
}
string address = 1;
repeated room rooms = 2;
}
它将与go中的以下结构相对应:
type House struct {
name string
rooms []*room
}
type room struct {
name string
windows int32
doors int32
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.