我有一个列表列表字段,如下所示:
public class MyClass{
private List<List<String>>
}
如何在proto文件中定义它?
答案 0 :(得分:5)
将这两者结合起来给我们:
message ListOfListsOfStrings {
repeated ListOfStrings listOfStrings=1;
}
message ListOfStrings {
repeated string strings=2;
}
然后,您可以在原型中使用 ListOfListsOfStrings 消息。
答案 1 :(得分:0)
我想知道同样的事情,并且得知我可以做到:
stream
repeated
如下所示:
syntax = "proto3";
import "google/protobuf/empty.proto";
message Dummy {
string foo = 1;
string bar = 2;
}
message DummyList {
repeated Dummy dummy = 1;
}
service DummyService {
rpc getDummyListWithStream(google.protobuf.Empty) returns (stream Dummy) {}
rpc getDummyListWithRepeated(google.protobuf.Empty) returns (DummyList) {}
}
那么,哪个?
通常,如果您的用例允许客户处理 一次收到一条消息,流是更好的选择。如果 您的客户端将一直处于阻塞状态,直到所有消息到达并 然后汇总处理它们,则重复字段可能是 适当,但是即使在这种情况下,流也可以像 很好,只是失去了一些潜在的可压缩性。
从此处引用:https://groups.google.com/forum/#!topic/grpc-io/F23vXwilTq0
答案 2 :(得分:0)
协议缓冲区没有任何类型的列表。但是列表是字符串的重复值。因此,我们可以创建一个具有字符串输入的消息,并使用来自另一条消息的重复关键字调用该消息
例如
message person{
repeated nameList list = 1;
}
message nameList{
string name = 1;
}