Enconde список карт в protobuf? - PullRequest
0 голосов
/ 09 июля 2019

Фон

Я пытаюсь использовать 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
}

Исследования

Моя цель - создать файл .proto, используя proto3. Поэтому я решил прочитать документацию для файлов .proto3:

https://developers.google.com/protocol-buffers/docs/proto3#maps

Но я был еще более смущен. Согласно документации, у меня не может быть карты, содержащей значения разных типов:

Для этого мне потребуется эквивалент типа JSON object и проверить документы на .struct.proto, но на этой странице ничего об этом не упоминается.

Вопрос

Так что я довольно заблудился здесь. Как мне представить упомянутую структуру данных в .proto?

1 Ответ

0 голосов
/ 10 июля 2019

Ответ

Оказывается, мне на самом деле карта не нужна, достаточно списка объектов (сообщений):

    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;
  }
...