您可以直接将文件中的内容加载到原型中吗?

时间:2018-09-25 20:00:02

标签: python string parsing protocol-buffers

我正在阅读文档,似乎找不到明确的内容。

假设我有一个protobuf定义MyObject.pb。 我创建了MyObject类型的对象,并将其每个字段设置为一些有意义的值。并假设所有值都是原始原语(int,float,string ...)。

假设我将这些值存储为表示字符串,并遵循与定义相同的语法。

例如,如果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 :(得分:3)

尽管它没有使用与定义完全相同的语法,但是您可以使用google.protobuf.text_format module来解析更易于理解的消息表示形式。具体来说,Merge方法将这样的字符串解析为协议缓冲区,而MessageToString方法将协议缓冲区转换为字符串。

对于您的示例消息,文本表示如下所示:

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

它也可以处理嵌套消息。 (See this other answer for more detail.