1

I want to receive a list (array) of message using protobuf. The idea would be to receive something like:

[
  {
    "field1": "value1",
    "field2": "value2"
  },
  {
    "field1": "value1",
    "field2": "value2"
  }
]

However, when defining protobuf messages I can get ride of the top name in this array. For example:

message MyFields {
  string field1 = 1;
  string field2 = 2;
}

message MyMessage {
  repeated MyFields some_identifier = 1;
}

Which would create something like:

{
  "some_identifier":
 [
   {
    "field1": "value1",
    "field2": "value2"
   },
   {
    "field1": "value1",
    "field2": "value2"
   }
 ]
}

Not even sure if this is possible with protobuf.

Thanks!

2 Answers2

1

It is not possible.

Protobuf requires that messages comprise fields and fields have a name, a type (and a field number).

See Definining a Message Type

In your example, the repeated message field would have no name and this isn't permitted.

DazWilkin
  • 32,823
  • 5
  • 47
  • 88
0

did you try with a repeated Map? Like:

message MyFields {
  map<string, string> MyMap = 1;
}

message MyMessage {
  repeated MyFields some_identifier = 1;
}
Matteo
  • 37,680
  • 11
  • 100
  • 115