Какова ожидаемая сериализация JSON поля "oneof" protobuf?

Предполагая, что у меня есть .proto со структурой вроде этого:

syntax = "proto3";

message Foo {
  ...
}
message Bar {
  ...
}

message Msg {
  string baz = 1;
  oneof some_union {
     Foo foo = 2;
     Bar bar = 3;
  }
}

Каков ожидаемый способ сериализации такого сообщения? Раздел JSON Mapping в спецификации не очень ясен.

Я могу видеть по крайней мере два способа представить его, что является правильным?

Первый способ: иметь один элемент на "верхнем уровне", игнорировать остальные:

{
  "baz" : 0,
  "foo" : { ... }
}

Второй способ: иметь свойство "unmbrella" с именем объединения и дать ему одно поле.

{
  "baz" : 0,
  "some_union": {
    "foo" : { .... }
  }
}

Чего я должен ожидать?

Ответ 1

Я пишу некоторый тестовый код, он показывает, что первый правильный.

Ответ 2

json.Marshal(c) // second
proto.Marshal(c) // protobuf binary to []byte