如何获取protobuf消息中的所有字段?

时间:2017-04-25 07:21:33

标签: protocol-buffers

这些天我使用的是protobuf,我遇到了一个问题。 我想获取protobuf消息中的所有字段并且我知道一个方法,使用field_count()来获取消息的字段计数,然后使用函数FindFieldByNumber()来获取所有字段。但是,如果消息的字段编号不连续,例如:

message MyPb
{
uint32    id   =1;
int32 score    =2;
string name    =5;
uint32  high   =6;
}

然后,MyPb的字段数为4,我使用

for(int i=1; i<=count; ++i)
{
    descriptor->FindFieldByNumber(i);
}

其中count = 4。

使用此方法,我可以获得字段namehigh吗? 如果没有,有人知道更好的方法吗? 非常感谢你。

1 个答案:

答案 0 :(得分:2)

您可以使用descriptor->field(i)代替FindFieldByNumber()。请检查the documentation for the difference between these two functions