2 回答

TA貢獻1853條經驗 獲得超9個贊
暫時忽略 JSON;在大多數語言/框架中,您將通過名稱訪問這些屬性,無論是獲取值還是檢查設置了哪一個。如果名稱沖突:你不能這樣做。
另外:anyof
允許同一類型用于受歧視聯合中的多個成員,在這種情況下,您想要做的事情會變得更加混亂。
最后,回到 JSON:解析器看到"properties":
-接下來它期望什么?一旦解析了該值,在可區分聯合中哪個字段被視為“設置”?
所以不,出于多種原因:這是不允許的。

TA貢獻1831條經驗 獲得超10個贊
我已經使用這種方式解決了 JSON 序列化的類似用例。
message MyResponse {
? ? int32 a = 1;
? ? string b = 2;
? ? oneof Properties {
? ? ? ? PropertiesType1 properties1 = 3 [json_name = "properties"];
? ? ? ? PropertiesType2 properties2 = 4 [json_name = "properties"];
? ? ? ? PropertiesType3 properties3 = 5 [json_name = "properties"];
? ? ? ? PropertiesType4 properties4 = 6 [json_name = "properties"];
? ? }
}
如果您使用 protoc 編譯器,這會起作用,但它不適用于 buf lint/build 等高級工具。希望這可以幫助。
添加回答
舉報