Or can I, instead of going through all the troubles with protobuf/json in
javascript, just use a `map`?
```
// proto
message Request {
map<string, ?type?> variables = 1;
}
```
But what would `?typ?` then be if it the values can ben anything
(proto.MessageX, string, boolean, etc)?
On Friday, July 3, 2020 at 11:40:54 PM UTC+2, [email protected] wrote:
>
> I just found out about `proto.google.protobuf.Struct.fromJavaScript` and
> tried it:
>
> ```
> // code
> struct = proto.google.protobuf.Struct.fromJavaScript(vars);
> req = new Request;
> req.variables = struct;
> ```
>
> This works for a simple `obj` (e.g. `{"key": "val"}`), but for an `obj`
> with a proto message field (such as above) it resulted in :
>
> ```
> struct_pb.js:875 Uncaught Error: Unexpected struct type.
> at Function.proto.google.protobuf.Value.fromJavaScript
> (struct_pb.js:875)
> at Function.proto.google.protobuf.Struct.fromJavaScript
> (struct_pb.js:941)
> at Function.proto.google.protobuf.Value.fromJavaScript
> (struct_pb.js:871)
> at Function.proto.google.protobuf.Struct.fromJavaScript
> (struct_pb.js:941)
> at Function.proto.google.protobuf.Value.fromJavaScript
> (struct_pb.js:871)
> at Function.proto.google.protobuf.Struct.fromJavaScript
> (struct_pb.js:941)
> at Function.proto.google.protobuf.Value.fromJavaScript
> (struct_pb.js:871)
> at Function.proto.google.protobuf.Struct.fromJavaScript
> (struct_pb.js:941)
> ```
>
>
> On Friday, July 3, 2020 at 11:12:31 PM UTC+2, [email protected] wrote:
>>
>> I've been struggling with passing a JSON with Message values back and
>> forth between a browser (grpc-web) and server (python grpc). A Struct seems
>> to be the way but even though the struct I'm sending looks perfectly fine,
>> it is empty once received by the server.
>>
>> ```
>> // proto
>> message Result {
>> google.protobuf.Struct variables = 1;
>> }
>>
>> // obj - Where variables would contain a (1 level deep) JSON with
>> different types of values, e.g.:
>> {
>> "key1": 1,
>> "key2": true,
>> "key3": proto_msg_a //instance of proto.MessageA
>> }
>>
>> // code (js in browser using grpc-web)
>> struct = new proto.google.protobuf.Struct(obj);
>> req = new Request;
>> req.variables = struct;
>>
>> ```
>>
>> Checking `req.variables` before sending shows that it's indeed a `Struct`
>> with all the correct fields in it. But once the other end (server) receives
>> it `req.variables` is an empty `Struct`. For testing purposes I tried an
>> `obj` that is simply `{'key': 'value'}`, but the result was the same.
>>
>>
>> I would really like to use proto messages in variables. The reason for
>> picking protobuf/grpc was exactly this, being able to use the same type
>> throughout our complete platform, but this seems to be blocking this goal.
>> Did I miss something? What would you do?
>>
>> I've also asked this on StackOverflow:
>> https://stackoverflow.com/questions/62693938/grpc-passing-json-with-proto-message-field-between-browser-and-server
>>
>
--
You received this message because you are subscribed to the Google Groups
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/grpc-io/0da37630-c8b0-4c65-8f77-452154889500o%40googlegroups.com.