Can you use an Any method, like unpack 
<https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/Any.html#unpack-java.lang.Class->
 or getParserForType 
<https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/Any.html#getParserForType-->
?
On Friday, January 21, 2022 at 2:24:36 AM UTC-8 qing zhou wrote:

> The proto file defined like this:
> message HqMessage {
>         uint32 busi_no          = 1;
>         google.protobuf.Any detail      = 2;
> }
>
> message B0T4F1 {
>         uint32 MarketType               = 501;
> }
> //---------------------------------------------------------------------
> *STEP1, *use protobuf's reflection, I had set the message of BOT4F1 to 
> the 'detail':
>       .......
>           const google::protobuf::Descriptor* _detail_des = 
> _des_pool->FindMessageTypeByName("B0T4F1");
>         const google::protobuf::Message* _detail_prototype_message = 
> m_dynamic_factory.GetPrototype(_detail_des);
>         google::protobuf::Message* _detail_msg = 
> _detail_prototype_message->New();
>         const google::protobuf::Reflection* _detail_msg_ref = 
> _detail_prototype_message->GetReflection();
>         const google::protobuf::FieldDescriptor* _detail_fd = 
> _detail_des->FindFieldByNumber(501);
>         uint32 mkt_type =100;
>         _fd = _des->FindFieldByNumber(2);
>           _msg_ref ->*SetAllocatedMessage(*_msg, _detail_msg, _fd);
> .......
> *STEP2,*serialize the message to a buffer, then parse the HqMessage from 
> the buffer.
> *STEP3**, firest, *I get the message of Any, then serialize the any 
> message to buffer again. Finally,get the message object of B0T4F1 through 
> the new buffer.
>
> How can i parse the buffer to the message of B0T4F1 without serialize 
> ’detail' message again. Could I get the ‘B0T4F1' message from 'HqMessage ' 
> directly? How can i do this?
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/c798ff02-61ea-45b3-a931-b06057251d0dn%40googlegroups.com.

Reply via email to