2011-07-07 238 views
2

我想解析一个非常大的消息(大约25个字段)并将它们序列化。消息中的字段始终以相同的顺序出现,并且在原始文件中我相应地对它们进行了编号。有没有一种方法来设置标签值(proto文件中的数字)的字段?谷歌协议缓冲区

谢谢, Chem。

+0

“有没有一种方法”......好吧,你使用的是什么实现,对于初学者来说 - 从内存来看,有40种不同的实现/工具 –

+0

现在我正在比较相应的名称并设置值,就像代码中的很多IF条件。我想摆脱他们。 – Drew

+0

btw我正在做它在java – Drew

回答

6
google::protobuf::Message myMessage; 
const google::protobuf::Descriptor * myDescriptor = myMessage.GetDescriptor(); 
const google::protobuf::FieldDescriptor * myField = myDescriptor->FindFieldByNumber(9001); 
const google::protobuf::Reflection * myReflection = myMessage.GetReflection(); 
myReflection->SetInt32(&myMessage, myField, 7); 

很明显,您需要更改字段号,字段类型以及要设置的值。

+0

非常感谢。我在API中找到了FieldDescriptor.findFieldByNumber(),但无法连接其他点。 – Drew