Можете ли вы напрямую загрузить содержимое из файла в protobuff? - PullRequest
0 голосов
/ 25 сентября 2018

Я читаю документацию и не могу найти ничего явного.

Допустим, у меня есть определение protobuf MyObject.pb.Я создаю объект типа MyObject и устанавливаю для каждого из его полей какое-то значимое значение.И предположим, что все значения являются прото-примитивами (int, float, strings ...).

Скажите, что я храню эти значения в виде строки представления, которая соответствует синтаксису определения.

например, если MyObject.pb выглядит следующим образом:

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
}

И связанный сохраненный файл выглядит следующим образом:

message Person {
  required string name = aStringName;
  required int32 id = 100;
  optional string email = ex@mple.com;
}

Есть ли способ автоматически инициализировать протобуфер, предоставив конструктору путь кпредставляющая строка в качестве аргумента?или вам нужно делать разбор вручную?

1 Ответ

0 голосов
/ 25 сентября 2018

Хотя он не использует точно такой же синтаксис, как определение, вы можете использовать google.protobuf.text_format модуль для анализа более удобочитаемого представления сообщения.В частности, метод Merge анализирует такую ​​строку в буфере протокола, а метод MessageToString превращает буфер протокола в строку.

Для вашего примера сообщения текстовое представление будет выглядеть так:

name: "aStringName"
id: 100
email "ex@mple.com"

Может также обрабатывать вложенные сообщения.( См. Этот другой ответ для более подробной информации. )

...