It sounds like you are observing the expected behavior regarding how these
wrapper types are marshalled/unmarshalled to/from JSON:
https://developers.google.com/protocol-buffers/docs/proto3#json

They get "unboxed" in JSON, as do various other well-known types such as
structs, timestamps, and durations.


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

On Tue, Oct 24, 2017 at 5:54 AM, Jack Wootton <[email protected]> wrote:

> I'm using wrappers.proto in my own API that sits behind Google's
> Extensible Service Proxy
> <https://github.com/cloudendpoints/endpoints-tools>. The proxy
> trans-codes JSON <-> ProtoBuf. Code for trans-coding is
>
> https://github.com/cloudendpoints/esp/blob/ee24633d0e6837f7d7fa05302f4ea6
> bd419a7d8e/src/api_manager/utils/marshalling.cc#L53. For example:
>
>
> Status ProtoToJson(const Message& message, std::string* result, int
> options) {
>  ::google::protobuf::util::JsonPrintOptions json_options;
>  if (options & JsonOptions::PRETTY_PRINT) {
>    json_options.add_whitespace = true;
>  }
>  if (options & JsonOptions::OUTPUT_DEFAULTS) {
>    json_options.always_print_primitive_fields = true;
>  }
>  // TODO: Skip going to bytes and use ProtoObjectSource directly.
>  ::google::protobuf::util::Status status = ::google::protobuf::util::Bina
> ryToJsonString( GetTypeResolver(), GetTypeUrl(message),
> message.SerializeAsString(),
>    result, json_options);
>    return Status::FromProto(status);
>  }
>
> Note the call to message.SerializeAsString()
>
> I've noticed my web client receives any wrapper messages, without their
> wrapper. For example, my server constructs a message
>
> message NumberOptions {
>     google.protobuf.Int32Value minimum = 1;
>     google.protobuf.Int32Value maximum = 2;
> }
>
> with the following values:
>
> minimum {
>   value: 1
> }
> maximum {
>   value: 100
> }
>
> However, after my message passes through the ESP (and is serislised to
> JSON), my client receives:
>
> minimum: 1
> maximum: 100
>
> Does SerializeAsString automatically unpack any wrapper messages? If so,
> can I also send JSON:
>
> minimum: 1
> maximum: 100
>
> ..and expect wrappers to be created (if the message is defined to use
> wrappers), i.e.
>
> message NumberOptions {
>     google.protobuf.Int32Value minimum = 1;
>     google.protobuf.Int32Value maximum = 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 [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