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.