Oops, I meant to point you to google.protobuf.Value: https:/
/github.com/google/protobuf/blob/master/src/google/protobuf/struct.proto#L63

It can represent *any* kind of JSON value. The Struct type is what is used
to represent JSON *objects* (there is also ListValue, for arrays, as well
as support for JS primitive types and null).


----
*Josh Humphries*
[email protected]

On Thu, Jun 21, 2018 at 3:25 PM, Josh Humphries <[email protected]>
wrote:

> Hi, John,
> Take a look at the well-known type google.protobuf.Struct. It is
> basically a JSON value, modeled as a proto. It's JSON representation is
> exactly what you want, too:
>
> https://github.com/google/protobuf/blob/master/src/google/
> protobuf/struct.proto#L52
>
>
>
> ----
> *Josh Humphries*
> [email protected]
>
> On Thu, Jun 21, 2018 at 3:20 PM, John Lilley <[email protected]> wrote:
>
>> Disclaimer: I am totally new to protobuf, engaged in an exploratory POC.
>> Please forgive dumb questions :-)
>>
>> We are looking at migrating an existing, JSON-based protocol in which
>> hand-coded C++ is written to perform serdes between objects and JSON. We
>> want to replace the hand-coding with an automated approach that can be
>> shared between C++ and Java.  However, a stumbling block I see is that some
>> messages have an arbitrary field full of JSON like:
>>
>> {
>>    "name":"john",
>>    "address":"123 main st",
>>    "attributes":{ any JSON can go here }
>> }
>>
>> While I realize that we could stringify the JSON, this breaks our
>> published API.  Is there any way I can use protobuf to perform serdes
>> between message like this and some struct like:
>>
>> {
>>    string name;
>>    string address;
>>    json attributes;
>> }
>>
>> I'm even OK if the internal data is stringified JSON:
>>
>> {
>>    string name;
>>    string address;
>>    string attributes;
>> }
>>
>> So long as the exchanged JSON isn't stringified.  In other words, this is
>> bad:
>> {
>>    "name":"john",
>>    "address":"123 main st",
>>    "attributes":"{ \"attr1\":\"value1\", \"attr2\":[\"elem1\", \"elem2\"]
>>  }"
>> }
>>
>> It needs to be exchanged like
>> {
>>    "name":"john",
>>    "address":"123 main st",
>>    "attributes":{ "attr1":"value1", "attr2":["elem1", "elem2"] }"
>> }
>>
>> Is this possible?
>>
>> Thanks
>> john
>>
>> --
>> 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.
>>
>
>

-- 
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