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.
