来自Java列表的Protobuff消息<;列表<;对象>&燃气轮机;
我一直在尝试将Java List>打包到protobuf3消息中,我只是想知道定义一个可以打包这样一个列表的proto文件的最佳方法是什么,以及如何有效地映射它,因为我一直在尝试,但无法使它工作 我最初的想法是:来自Java列表的Protobuff消息<;列表<;对象>&燃气轮机;,java,protocol-buffers,protobuf-java,Java,Protocol Buffers,Protobuf Java,我一直在尝试将Java List>打包到protobuf3消息中,我只是想知道定义一个可以打包这样一个列表的proto文件的最佳方法是什么,以及如何有效地映射它,因为我一直在尝试,但无法使它工作 我最初的想法是: // Proto file message TutorialAPIResponse { repeated google.protobuf.Any values = 1; } //Packaging List<List<Object>> apiValue
// Proto file
message TutorialAPIResponse {
repeated google.protobuf.Any values = 1;
}
//Packaging
List<List<Object>> apiValues = Api.getWhatever();
AnalyzeSignalsResponse response = AnalyzeSignalsResponse.newBuilder()
// line below gives compile error "error: incompatible types: List<List<Object>> cannot be converted to Iterable<? extends Any>"
.addAllValues(values)
.build();
//Proto文件
消息教程响应{
重复google.protobuf.Any值=1;
}
//包装
List apiValues=Api.getWhatever();
AnalyzeSignalsResponse response=AnalyzeSignalsResponse.newBuilder()
//下面一行给出了编译错误“错误:不兼容类型:列表无法转换为Iterable您不能在protobuf中真正表达双重嵌套列表;您需要表达一个本身具有列表的列表;因此..对于具有列表的某些Foo
,或者用protobuf术语来说,List
:
消息教程响应{
重复的Foo项目=1;
}
留言富{
重复google.protobuf.Any值=1;
}
另外,我个人会避免使用Any
。如果你不说Any
就无法表达你返回的内容,我认为这不是一个好的API界面。你不能在protobuf中真正表达双嵌套列表;你需要表达一个本身有列表的东西的列表;因此..alist
对于一些Foo
有一个列表
,或用protobuf术语:
消息教程响应{
重复的Foo项目=1;
}
留言富{
重复google.protobuf.Any值=1;
}
另外,就个人而言,我会避免使用Any
。如果你不能在不说Any
的情况下表达你返回的内容,我认为这不是一个好的API界面。完全同意。完全同意。