如何在协议缓冲区中表示二维数组?
2022-09-02 13:34:45
如何在协议缓冲区中表示二维数组?
我需要将和2d数组存储为PB消息上的字段,例如:int
double
int[][] multi = new int[5][10];
我使用的是C++,Java和C#。
提前致谢。
如何在协议缓冲区中表示二维数组?
我需要将和2d数组存储为PB消息上的字段,例如:int
double
int[][] multi = new int[5][10];
我使用的是C++,Java和C#。
提前致谢。
协议中没有对此的直接支持。你最好的选择是有一组重复的对象,每个对象都有一个数组 - 即
message Foo {
repeated int items = 1;
}
...
repeated Foo foos = 1;
你可以试试 structpb。喜欢这个:
.proto
import "google/protobuf/struct.proto";
message Foo {
repeated google.protobuf.Value array = 1;
}
.go
import (
"google.golang.org/protobuf/types/known/structpb"
"google.golang.org/protobuf/encoding/protojson"
)
...
foo := &Foo{}
items := []interface{}{1,2,3,4,5}
l, err := structpb.NewList(items)
foo.array = append(foo.array, structpb.NewListValue(l))
protojson.Format(foo) // [[1,2,3,4,5]]