将JSON属性反序列化为类

时间:2014-12-14 22:39:44

标签: c# json deserialization

在大多数情况下,我的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; }
}

1 个答案:

答案 0 :(得分:2)

您必须将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实例