How can be an array of double (1D) stored using protocol buffer? What about multi-dimensional (2D or 3D) dense arrays?
How can be an array of double (1D) stored using protocol buffer? What about multi-dimensional (2D or 3D) dense arrays?
If your main goal is a denser JSON representation, you could use the "well known type" [google.protobuf.ListValue][1] for the second dimension:
import "google/protobuf/struct.proto";
message DoubleMatrix {
uint32 cols = 1;
uint32 rows = 2;
repeated google.protobuf.ListValue values = 3;
}
This will produce an array of arrays when marshaling the data to JSON.
{
"cols": 2,
"rows": 2,
"values": [[1, 2], [3, 4]]
}
The downside is that the ListValue type internally uses an inner type that uses the one-of pattern for the values. This may be more cumbersome to handle in your source code than using your own inner type without all the magic.