我对Protobufs相对较新,我想知道如何使用它来处理结构列表。
假设我有一个如下所示的配置文件:
Bucket{
name = "A";
path = "~/Document/...";
traffic = 5;
}
Bucket{
name = "B";
path = "~/Document/...";
traffic = 6;
}
Bucket{
name = "C";
path = "~/Document/...";
traffic = 7;
}
等等。
所以我使用protobuf来构建它,以便以后在Java中使用。我基本上试图在地图中创建一个地图(一个protobuf来帮助找到正确的存储桶,然后是另一个地图来获取存储桶中的成员属性)。
option java_outer_classname = "Buckets";
message Bucket {
required string name = 1;
required string path = 2;
optional int32 traffic = 3;
}
message BucketList {
required Bucket bucket = 1;
}
我对如何将两者联系起来很困惑,例如,如何将配置文件传递到protobuf方法(在编译成java类之后)并用来访问存储桶成员来执行类似的操作说从名称为A的桶中获取路径?
谢谢!
答案 0 :(得分:1)
使用Protobuf作为声明和解析文本配置文件的机制是完全可以接受的。但是,必须记住,Protobuf的目的是声明文件的格式,无论是纯文本还是二进制有线格式。一旦读取了配置,就需要在自定义应用程序代码中强制执行更高级别的语义约束。
答案 1 :(得分:-1)
您对protobuf的用途有错误的想法,它是一个数据交换库,意味着它用于在程序之间编码和交换数据。它从未打算用于配置,并且没有办法读取基于文本的数据定义,因为它处理二进制文件。
查看配置格式,您有两种选择: