将字符串反序列化为* .proto中定义的对象时出现错误?

请注意,该对象是在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中可以。)感谢您的帮助!

dqlovedq 回答:将字符串反序列化为* .proto中定义的对象时出现错误?

我已经尝试过使用NewtonsoftJson和一个对我有用的Root-Object来解决您的问题 这是我的解决方案:

result <- ((peekP handle BASE_ADDRESS) :: IO Int32)
本文链接:https://www.f2er.com/3008495.html

大家都在问