Hi Tim,
I think your analysis is correct. The answer to your question is that it's
not possible to transcode Any from JSON <-> protobuf unless you have the
schema. That is one of the reasons why the type URL exists as a way to
fetch schemas for types you otherwise wouldn't know about.
I'm glad the conformance suite was helpful!
Best,
Josh
On Wednesday, February 3, 2016 at 1:37:40 PM UTC-8, Tim Kientzle wrote:
>
> I’m trying to implement Any, including proper JSON and protobuf encoding,
> and the following scenario has me stumped:
>
>
> I’m looking at the any.proto file, which includes this example:
>
>
> Sample proto file:
>
> // package google.profile;
>
> // message Person {
>
> // string first_name = 1;
>
> // string last_name = 2;
>
> // }
>
>
> Resulting JSON encoding:
>
> // {
>
> // "@type": "type.googleapis.com/google.profile.Person",
>
> // "firstName": <string>,
>
> // "lastName": <string>
>
> // }
>
>
> The scenario I’m trying to understand involves three systems:
>
>
> Originating system:
>
> * Knows google.profile and writes out the JSON above
>
>
> Middle system:
>
> * Reads the JSON example above
>
> * Does *not* know google.profile (doesn’t have the descriptor and has no
> way to get it)
>
> * Writes out protobuf
>
>
> Receiving system:
>
> * Knows google.profile and reads the protobuf
>
>
> In particular: What is the protobuf serialization between the middle and
> receiving systems?
>
>
> Without the descriptor, the middle system cannot poduce the “real"
> protobuf binary format (the field numbers aren’t in that format), so the
> only option would seem to be to serialize the JSON data as a protobuf
> Struct representation (which in turn has interesting implications for the
> receiving system). Am I missing some other option?
>
>
> Tim
>
>
> P.S. Nice work on the conformance test suite, by the way! That clarified
> a *lot* of details about the expected handling for protobuf JSON format.
>
>
>
--
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.