我似乎有问题,反序列化这个XML:deserialise嵌套的XML
<Parameters>
<AParameters>
</AParameters>
<BParameters>
</BParameters>
</Parameters>
成AParameters和BParameters水合不正确。在这种嵌套的情况下,我有什么需要考虑的吗?
我似乎有问题,反序列化这个XML:deserialise嵌套的XML
<Parameters>
<AParameters>
</AParameters>
<BParameters>
</BParameters>
</Parameters>
成AParameters和BParameters水合不正确。在这种嵌套的情况下,我有什么需要考虑的吗?
当您使用JsonConvert.SerializeXmlNode(doc)
你的XML文档转换成JSON字符串,则生成看起来像这样JSON:
{
"?xml":
{
"@version":"1.0"
},
"Parameters":
{
"AParameters":
{
...
},
"BParameters":
{
...
}
}
}
注意,Parameters
数据不是在根,但外内目的。因此,当您尝试将JSON直接反序列化到Parameters
类时,没有一个属性排队,因为它们都进一步向下。由于JSON.Net无法将类中的字段名称与JSON数据进行匹配,因此它只使用默认值。
要解决这个问题,你可以做两件事之一。
1)修复您的XML到JSON转换,以便Parameters
数据位于根目录。为了使它工作,JSON数据需要如下所示(下图)。说起来容易做起来难。
{
"AParameters":
{
...
},
"BParameters":
{
...
}
}
2)创建一个包装类并反序列化到那个。这很容易。例如:
class Wrapper
{
public Parameters Parameters { get; set; }
}
然后反序列化这样的:
Parameters p = JsonConvert.DeserializeObject<Wrapper>(jsonString).Parameters;
谢谢。是的,我认为是这样。 '包装'的方法完美。谢谢! – cs0815
你不应该让类为Serializable?还有什么是你面临的问题,任何异常或错误? – srsyogesh