I'm using grpc golang to communicate between client and server application. Below is the code for protoc buffer.
syntax = "proto3";
package Trail;
service TrailFunc {
rpc HelloWorld (Request) returns (Reply) {}
}
// The request message containing the user's name.
message Request {
map<string,string> inputVar = 1;
}
// The response message containing the greetings
message Reply {
string outputVar = 1;
}
I need to create a field inputVar of type map[string]interface{} inside message data structure instead of map[string]string. How can I achieve it? Thanks in advance.
Protocol buffers, or Protobuf, is Google's serialization/deserialization protocol that enables the easy definition of services and auto-generation of client libraries. gRPC uses this protocol as their Interface Definition Language (IDL) and serialization toolset.
protobuff is a data representation like json this is also by google in fact they have some thousands of proto file are generated in their production projects. grpc. gRPC is an open-source framework developed by google. It allows us to create Request & Response for RPC and handle rest by the framework.
You can use any text editor to create a . proto file. If you'd like to have syntax highlighting there are also editors that would give you that. I use IntelliJ but a quick Google search found an Eclipse plugin which appears to be free: https://code.google.com/p/protobuf-dt/.
proto3 has type Any
import "google/protobuf/any.proto";
message ErrorStatus {
string message = 1;
repeated google.protobuf.Any details = 2;
}
but if you look at its implementation, it is simply as
message Any {
string type_url = 1;
bytes value = 2;
}
You have to define such a message yourself by possibly using reflection and an intermediate type.
See example application
https://github.com/golang/protobuf/issues/60
I wrote a longer post about how to use google.protobuf.Struct
to work with arbitrary JSON input. The structpb
package capable to produce a map[string]interface{}
from a structpb.Struct
via its AsMap()
function.
Official documentation: https://pkg.go.dev/google.golang.org/protobuf/types/known/structpb
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With