来自Java列表的Protobuff消息<;列表<;对象>&燃气轮机;

来自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

我一直在尝试将Java List>打包到protobuf3消息中,我只是想知道定义一个可以打包这样一个列表的proto文件的最佳方法是什么,以及如何有效地映射它,因为我一直在尝试,但无法使它工作

我最初的想法是:

// 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中真正表达双嵌套列表;你需要表达一个本身有列表的东西的列表;因此..a
list
对于一些
Foo
有一个
列表
,或用protobuf术语:

消息教程响应{
重复的Foo项目=1;
}
留言富{
重复google.protobuf.Any值=1;
}

另外,就个人而言,我会避免使用
Any
。如果你不能在不说
Any
的情况下表达你返回的内容,我认为这不是一个好的API界面。

完全同意。完全同意。