在 protobuf 中编码地图列表?
Enconde a list of maps in protobuf?
背景
我正在尝试为我们的一个应用程序使用 protobuff,但我无法理解该协议,我需要帮助创建一个 .proto
文件。
数据
我需要编码的数据是一个地图列表,结构如下:
[
{
"AwayTeam": "Osasuna",
"Date": "2017-05-07",
"Div": "SP1",
"FTAG": 1,
"FTHG": 4,
"FTR": "H",
"HTAG": 0,
"HTHG": 2,
"HTR": "H",
"HomeTeam": "Valencia",
"Season": 201617
},
{
"AwayTeam": "Osasuna",
"Date": "2016-02-27",
"Div": "SP2",
"FTAG": 1,
"FTHG": 0,
"FTR": "A",
"HTAG": 0,
"HTHG": 0,
"HTR": "D",
"HomeTeam": "Cordoba",
"Season": 201516
}
]
每张地图的结构如下:
{
"AwayTeam": string, required: true
"Date": string, required: true
"Div": string, required: true
"FTAG": integer, required: true
"FTHG": integer, required: true
"FTR": string, required: true
"HTAG": integer, required: true
"HTHG": integer, required: true
"HTR": string, required: true
"HomeTeam": string, required: true
"Season": integer, required: true
}
研究
我的目标是使用 proto3
创建 .proto 文件。所以我决定阅读 .proto3 文件的文档:
https://developers.google.com/protocol-buffers/docs/proto3#maps
但我更糊涂了。根据文档,我无法拥有包含不同类型值的地图:
为此,我需要 JSON object
类型的等价物,并检查文档中的 .struct.proto
但该页面没有提及任何相关内容。
问题
所以我在这里迷路了。如何在 .proto
?
中表示上述数据结构
回答
事实证明我实际上不需要地图,对象(消息)列表就足够了:
syntax = "proto3";
message Result {
string AwayTeam = 1;
string Date = 2;
string Div = 3;
int32 FTAG = 4;
int32 FTHG = 5;
string FTR = 6;
int32 HTAG = 7;
int32 HTHG = 8;
string HTR = 9;
string HomeTeam = 10;
int32 Season = 11;
}
message Response {
repeated Result results = 1;
}
背景
我正在尝试为我们的一个应用程序使用 protobuff,但我无法理解该协议,我需要帮助创建一个 .proto
文件。
数据
我需要编码的数据是一个地图列表,结构如下:
[
{
"AwayTeam": "Osasuna",
"Date": "2017-05-07",
"Div": "SP1",
"FTAG": 1,
"FTHG": 4,
"FTR": "H",
"HTAG": 0,
"HTHG": 2,
"HTR": "H",
"HomeTeam": "Valencia",
"Season": 201617
},
{
"AwayTeam": "Osasuna",
"Date": "2016-02-27",
"Div": "SP2",
"FTAG": 1,
"FTHG": 0,
"FTR": "A",
"HTAG": 0,
"HTHG": 0,
"HTR": "D",
"HomeTeam": "Cordoba",
"Season": 201516
}
]
每张地图的结构如下:
{
"AwayTeam": string, required: true
"Date": string, required: true
"Div": string, required: true
"FTAG": integer, required: true
"FTHG": integer, required: true
"FTR": string, required: true
"HTAG": integer, required: true
"HTHG": integer, required: true
"HTR": string, required: true
"HomeTeam": string, required: true
"Season": integer, required: true
}
研究
我的目标是使用 proto3
创建 .proto 文件。所以我决定阅读 .proto3 文件的文档:
https://developers.google.com/protocol-buffers/docs/proto3#maps
但我更糊涂了。根据文档,我无法拥有包含不同类型值的地图:
为此,我需要 JSON object
类型的等价物,并检查文档中的 .struct.proto
但该页面没有提及任何相关内容。
问题
所以我在这里迷路了。如何在 .proto
?
回答
事实证明我实际上不需要地图,对象(消息)列表就足够了:
syntax = "proto3";
message Result {
string AwayTeam = 1;
string Date = 2;
string Div = 3;
int32 FTAG = 4;
int32 FTHG = 5;
string FTR = 6;
int32 HTAG = 7;
int32 HTHG = 8;
string HTR = 9;
string HomeTeam = 10;
int32 Season = 11;
}
message Response {
repeated Result results = 1;
}