json没有取消类的序列化



我可以取消散列的序列化,但似乎无法将属性字段取消序列化为属性类,这是我的json对象

    {
        "attribute": {
            "status": "FWD",
            "type": "P2p",
            "cost": "4",
            "role": "Desg",
            "priorityNo": "128.1"
        },
        "hash": "50f74cc4c03637b753e884c4dfbd4270089658e5"
    }

这是我的c类

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; }
}

我可以取消接口对象中哈希的序列化,但似乎无法取消属性类的序列化,下面是我如何尝试取消对象的序列化

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

您的attribute属性中缺少public。如果不在private属性上添加附加属性,Json.Net就无法将值设置为该属性。

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

添加public,它就会起作用。

正如Crowdoder所指出的,反序列化无法正常工作的原因是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看起来像编辑过的版本,您应该能够以现有的方式对其进行解析。

相关内容

  • 没有找到相关文章

最新更新