【发布时间】:2021-12-24 00:27:23
【问题描述】:
我有这些课程:
public class House
{
public MyObject[] Objects { get; set; }
}
public class MyObject
{
public string Name { get; set; }
}
我这样实例化:
var house1 = new House
{
Objects = new MyObject[]
{
new MyObject() { Name = "Name1" },
new MyObject() { Name = "Name2" }
}
};
然后我得到它的 json 表示:
var jsonSerializerSettings = new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.Objects
};
string json = JsonConvert.SerializeObject(house1, jsonSerializerSettings);
从后者我得到相关的 XML:
XmlDocument doc = (XmlDocument)Newtonsoft.Json.JsonConvert.DeserializeXmlNode(json, "House", true);
string xmlString = doc.OuterXml;
最后我把xml转换成初始类型的对象:
XmlSerializer serializer = new XmlSerializer(typeof(House));
TextReader reader = new StringReader(xmlString);
House house2 = (House)serializer.Deserialize(reader)
问题是:
- 为什么 house1 与 house2 不同? (house2.Objects 是空的!)
- 我做错了什么?
Here你可以找到一个dotnetfiddle的例子
【问题讨论】:
-
可能是因为您的 XML 元素上的 JSON 命名空间。你为什么要这样做?