[英]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.