That does work, but it seems like it creates a lot of unnecessary work if 
there are many fields.

Is there a better way to handle a schema more like this?

 { type: "error", message: "wrong"} or { type:"ok", a: 1, b:2, c:3, d:4, 
... }.

On Monday, May 9, 2016 at 3:12:19 PM UTC-4, Feng Xiao wrote:
>
>
>
> On Fri, May 6, 2016 at 8:18 PM, Marco <a.f....@gmail.com <javascript:>> 
> wrote:
>
>> I'm looking to generate de/serialization for json tagged union messages 
>> from an external rest api, eg.
>> { type: "error", message: "wrong"} or { type:"ok", response: { a: 1, b: 
>> 2}}.
>>
>> Reading the docs it seems like an any valued field the type field 
>> modified json_name  would work similarly, although this isn't supported.
>>
>> Is there an existing .proto message that would map to those messages? 
>> Perhaps 
>> with some annotation to this more obvious schema, or being able to specify 
>> a custom tag to determine which case of a oneof is in use (instead of the 
>> default enum value)?
>>
> How about something like:
>
> message Response {
>   string type = 1;
>   message Content {
>     int32 a = 1;
>     int32 b = 2;
>   }
>   oneof OneofResponse {
>     string message = 2;
>     Content response = 3;
>   }
> }
>
> ?
>  
>
>> message Error {
>>   string message = 1;
>> }
>>
>> message Second {
>>   int64 response = 1;
>> }
>>
>> message MyUnion {
>>   oneof Either {
>>     Error  err = 1;
>>     Ok     ok  = 2;
>>   }
>> }
>>
>>
>>
>>
>> -- 
>> 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 protobuf+u...@googlegroups.com <javascript:>.
>> To post to this group, send email to prot...@googlegroups.com 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/protobuf.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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 protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to