json没有反序列化到课堂上

时间:2016-05-04 18:49:43

标签: c# json json.net deserialization

我可以反序列化我的哈希值,但似乎无法将我的属性字段反序列化为我的属性类,这里是我的json对象

public class InterfaceObject 
{
    public string hash { get; set; }
    Attribute attribute { get; set; }
}

public class Attribute
{
    public string hash { get; set; }
    public string role { get; set; }
    public string status { get; set; }
    public string cost { get; set; }
    public string priorityNo { get; set; }
    public string type { get; set; }
}

这是我的c#类

InterfaceObject ifa = JsonConvert.DeserializeObject<InterfaceObject>(message);

我能够在接口对象中反序列化哈希,但似乎无法反序列化我的属性类,这是我尝试反序列化我的对象

{{1}}

2 个答案:

答案 0 :(得分:4)

您在public媒体资源上遗漏了attribute。如果不在属性上添加其他属性,Json.Net无法将值设置为private属性。

public class InterfaceObject 
{
    public string hash { get; set; }
    public Attribute attribute { get; set; }
}

添加public即可。

答案 1 :(得分:0)

您的反序列化工作不正常的原因是,正如Crowcoder所指出的,attributeGi1/0/1的属性。你需要创建一个包罗万象的类来包含你已经创建的类来实现它。

这样的事情可以做到:

public class RootObject
{
    public InterfaceObject iObject { get; set; }
}

public class InterfaceObject 
{
    public string hash { get; set; }
    public Attribute attribute { get; set; }
}

public class Attribute
{
    public string hash { get; set; }
    public string role { get; set; }
    public string status { get; set; }
    public string cost { get; set; }
    public string priorityNo { get; set; }
    public string type { get; set; }
}    

但是现在您已经更改了原始帖子,您应该能够以您拥有的方式解析它,假设您的JSON看起来像编辑后的版本。