On Mon, Mar 14, 2016 at 7:40 PM, Josh Haberman <[email protected]> wrote:

> On Mon, Mar 14, 2016 at 7:07 PM, Feng Xiao <[email protected]> wrote:
>
>> On Mon, Mar 14, 2016 at 6:14 PM, Tim Kientzle <[email protected]> wrote:
>>>
>>> I was considering Any for cases such as logging, data storage, and other
>>> systems where intermediaries do not need to access or understand the
>>> additional data.  This was a common use of extensions in proto2:
>>> Intermediate handlers would decode and act on a limited set of well-known
>>> fields; additional data would be simply carried through until a final
>>> consumer decoded and acted on it.  Any satisfies this use case for
>>> protobuf-only systems but not for systems that use JSON.
>>
>> If you only use protobuf format, Any is mostly the same as extensions. If
>> you are using JSON, proto2 extension doesn't help solve the issue at all. I
>> think the problem is not that Any does not allow intermediate proxies to
>> pass through the data without knowing the type info, but that you are
>> trying to mix JSON and protobuf format in the same system. In google, we
>> are using a front-end proxy to convert JSON to/from protobuf, and
>> everything else behind it is using protobuf only. The current Any design
>> works with this approach very well. Not sure whether this works for your
>> case, but it's something worth considering.
>>
>
> If I'm understanding Tim correctly, I think what he is saying is true even
> of systems that use only JSON. For example, consider an app in Ruby that
> writes:
>
>   msg = MyMessageType.decode_json(json_text)
>
> If the JSON contains an Any, this line of code requires the parser to
> fetch type info, and it must fail if it cannot be retrieved. This affects
> even JSON-only apps.
>
Yes, a JSON parser is required to know all the type info for parsing. For
client apps that consume JSON, I think it's reasonable to expect them to
have the type info?

-- 
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 post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to