请注意,该对象是在proto文件中定义的,而不是在公共cs文件中定义的。它具有不同的行为。
我正在使用c#。我的原始文件的一部分是:
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中可以。)感谢您的帮助!
答案 0 :(得分:0)
我已经尝试过使用NewtonsoftJson和一个对我有用的Root-Object来解决您的问题 这是我的解决方案:
result <- ((peekP handle BASE_ADDRESS) :: IO Int32)