繁体   English   中英

有没有办法在 proto3 中有多种类型的数组?

[英]Is there a way to have an array of multiple types in proto3?

我想从这个 Cesium class 设计一个 proto3 消息: Cesium Class 它是一个包含 [string, double, double, double] 的数组。 有没有办法做到这一点?

我不相信您可以创建像链接中显示的那样任意长的消息,因为您的客户端和服务器必须在传输之前就字段的数量和顺序达成一致。

[Time, Longitude, Latitude, Height, Time, Longitude, Latitude, Height, ...]

问题:没有预先定义很多字段编号,如何传递这么多字段?

选项1

相反,您可以创建自己的消息类型来表示单个实例:

message CartographicRadians {
    string time = 1;
    double longitude = 2;
    double latitude = 3;
    double height = 4;
}

然后使用自定义类型作为字段。 此处的repeated关键字表示您可以在CartographicRadiansArray CartographicRadians

message CartographicRadiansArray {
    repeated CartographicRadians entries = 1;
}

选项 2

另一种方法是创建一个自递归消息,该消息将使 function 更接近上述类似流的格式。

message CartographicRadians {
    string time = 1;
    double longitude = 2;
    double latitude = 3;
    double height = 4;
    CartographicRadians nextEntry = 5;
}

protobufserialize/deserialize具有不同类型的数组的最佳选择是:

message Types{
  oneof types {
    string str= 1;
    double dou = 2;
  }
}

message CartographicRadians {
  repeated Types list = 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM