Обратите внимание, что объект определен в файле proto, а не в общем файле cs. У него другое поведение.
Я использую С #. Часть моего прото-файла:
message CodeDependency {
string path = 1;
DependencyType type = 2;
enum DependencyType {
NONE = 0;
TAR = 1;
ZIP = 2;
TAR_GZ = 3;
DIRECTORY = 4;
}
}
И у меня есть строка json:
{"codeDependency": {
"path": "/CAP_TEST/job_manager/modules/1c8185d5-2add-4bd4-a332-8b21a6819608/tmpr9z7xinh.tar.gz",
"type": "TAR_GZ"
}}
Я пробовал три способа десериализации:
Newtonsoft.Json.JsonConvert.DeserializeObject<CodeDependency>
CodeDependency.Parser.ParseFrom
ProtoBuf.Serializer.Deserialize<CodeDependency>
Ни один из них не работает. Из сообщения об ошибке кажется, что «TAR_GZ» не может быть десериализован.
Error converting value "TAR_GZ" to type 'Microsoft.ABC.GRPC.Modules.Module+Types+CodeDependency+Types+DependencyType'. Path 'graph.nodes[4].module.codeDependency.type', line 273, position 21. ---> System.ArgumentException: Requested value 'TAR_GZ' was not found
Если я изменю «TAR_GZ» на «TAR», все в порядке. Так, может быть, проблема связана с подчеркиванием в "TAR_GZ"? Есть ли способ решить эту проблему на C #? (Это нормально для python.) Спасибо за вашу помощь!