如何在Google Protobuf Value中设置Java对象



我正在编写一个通过GRPC使用服务(我不拥有该服务(的客户端。在运行时,我得到了n个变量/对象,我事先不知道这些变量/对象的类型。我必须将所有这些值发送到GRPC服务。我看到我们可以在Google protobuf值中设置Strings/Boolean/Double等。有没有一种方法可以将自定义对象设置为Value。这是的样本代码

Value v = null;
Struct s = null;
Map<String, Value> valueMap = new HashMap<String, Value>();
for (UpdateSession_Object varList : myRequest.getUpdate_session_list()) {
if (varList.getSession_var_value() instanceof String) {
v = Value.newBuilder().setStringValue(varList.getSession_var_value().toString()).build();
valueMap.put(varList.getSession_var_name(), v);
} else if (varList.getSession_var_value() instanceof Double) {
v = Value.newBuilder().setNumberValue((Double) varList.getSession_var_value()).build();
valueMap.put(varList.getSession_var_name(), v);
} else if (varList.getSession_var_value() instanceof Object) {
**// How do i set the object to Value**
}
}
s = Struct.newBuilder().putAllFields(valueMap).build();

有没有一种方法可以将Custom对象设置为Value,这样我就可以将所有传入的变量正确地发送到GRPC调用。

Value是一个类似JSON的数据结构。它不能处理任意Java对象。

最新更新