我可以取消散列的序列化,但似乎无法将属性字段取消序列化为属性类,这是我的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所指出的,反序列化无法正常工作的原因是attribute
是Gi1/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看起来像编辑过的版本,您应该能够以现有的方式对其进行解析。