It's the same situation with integers. If we made this return true then if 
you did not set the value and attempted to serialize it it would return 
true. I agree that this behavior isn't optimal, we just don't have a great 
way around it.

On Friday, June 16, 2023 at 5:40:59 AM UTC-7 Krati Chordia wrote:

> Hi Deanna!
> Agreed to your point. But if there is an integer and it's value is set to 
> 0, even then the parsing returns false. Which should not happen.
>
> On Thursday, June 15, 2023 at 11:20:56 PM UTC+5:30 Deanna Garcia wrote:
>
>> In protobuf, we can't store null strings so to denote a string that isn't 
>> set we use the empty string. For this reason, the parsing is returning 
>> false to tell you that there isn't a field there but as you're seeing will 
>> still parse as an empty string.
>>
>> On Wednesday, June 14, 2023 at 1:37:05 AM UTC-7 Krati Chordia wrote:
>>
>>> Hi,
>>> I am trying to send a message on wire with the following protobuf 
>>> structure
>>>
>>> message TestMsg {
>>>     string status = 1;
>>> }
>>>
>>> I create an instance of TestMsg and set status as empty and serialize it 
>>> to a string.
>>>
>>> TestMsg m1;
>>> m1.set_status("");
>>>
>>> std::string str = m1.SerializeAsString();
>>>
>>> Post serialization, str is sent over wire and tried to be parsed. 
>>> ParseFromString returns false whereas it should not. For any other value, 
>>> it parses successfully.
>>>
>>> TestMsg m2;
>>> m2.ParseFromString(str);  <----- this returns false
>>>
>>> Also, if I try to retrieve the value of m2.status(), it will return an 
>>> empty string even though the parsing returns false.
>>>
>>

-- 
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/32938bf8-ad54-4a80-b86b-6cfedf0f2befn%40googlegroups.com.

Reply via email to