将 JSON 属性反序列化为类

本文关键字:反序列化 属性 JSON | 更新日期: 2023-09-27 18:34:15

在大多数情况下

,除了我添加的最后一个属性外,我的 JSON 反序列化似乎工作正常。我有以下 JSON 字符串。如果我将我的类属性类型保留为属性 httpVerb 的字符串,则反序列化工作正常。但是,如果我将类属性类型保留为属性 httpVerb 的 System.Net.HttpMethod,则反序列化将失败。我真的很讨厌创建另一个枚举,因为 HTTP 动词已经在 HttpMethod 类中定义。

有人可以帮忙吗?

{
    "httpTest": {
        "ignoreCertificateErrors": false, 
        "successHTTPStatusCodes": [ 200 ], 
        "httpVerb": "GET"
    }
}
public class HttpTest
{
    public bool ignoreCertificateErrors { get; set; }
    public List<HttpStatusCode> successHTTPStatusCodes { get; set; }
    public HttpMethod httpVerb { get; set; }
}
public class RootObject
{
    public HttpTest httpTest { get; set; }
}

将 JSON 属性反序列化为类

您必须将 json 谓词反序列化为字符串。 也就是说,您可以返回相应的 HttpMethod 实例,以通过添加另一个属性来保留强类型。

public class HttpTest
{
    public bool ignoreCertificateErrors { get; set; }
    public List<HttpStatusCode> successHTTPStatusCodes { get; set; }
    public string httpVerb { get; set; }
    public HttpMethod HttpMethodInstance { 
        get { return new HttpMethod(httpVerb); }
    }
}
如果谓词

是有效的谓词,则可以使用它来实例化 HttpMethod 的新实例