Можете ли вы представить объект, который может иметь произвольные поля в proto3?

Рассмотрим следующее представление объекта в формате json

{
   "format":  "0.0.1",
   "has_impl": true,

   "mtv_1b": 1,
   "mtv_1c": "h",
   "ktc_12": true,
   "ktc_zz": true,
}

Первые два поля format и has_impl известны. Кроме того, объект может иметь произвольное количество mtv_XX и ktc_XX подобных полей.

Представим ли такой объект в proto3 и как бы вы к нему подошли?

Следующее может быть очевидной отправной точкой. Есть ли комбинация oneOf, WellKnownTypes, которые можно здесь использовать?

message MyObject {

   string format  = 0;
   bool has_impl = 1;


   // Is there anything that can go in here ? 
   ....

}

person Hakan Baba    schedule 04.06.2020    source источник


Ответы (1)


Не прямо. Самое близкое, что вы можете сделать, это иметь Struct (который является map<string, Value>, где Value - это oneof по сравнению с обычными типами), используя struct.proto. Не совсем то же самое, но допускает те же идеи.

person Marc Gravell    schedule 04.06.2020
comment
При подходе Struct я бы потерял возможность явно определять поля format и has_impl, верно? - person Hakan Baba; 05.06.2020
comment
@HakanBaba, вы потеряете возможность определять это на том же уровне; у вас может быть тип с format, has_impl и a Struct, хотя - person Marc Gravell; 05.06.2020