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/ee24633d0e6837f7d7fa05302f4ea6bd419a7d8e/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::
BinaryToJsonString( 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.

Reply via email to