JsonConvert.SerializeXmlNode() 为数组添加额外的子元素
Posted
技术标签:
【中文标题】JsonConvert.SerializeXmlNode() 为数组添加额外的子元素【英文标题】:JsonConvert.SerializeXmlNode() adds extra child for arrays 【发布时间】:2022-01-16 21:46:33 【问题描述】:我正在使用 JsonConvert.SerializeXmlNode() 来序列化一个 xml 节点:
var doc = new XmlDocument();
doc.LoadXml(xml.ToString());
jsonRequest = JsonConvert.SerializeXmlNode(doc);
这是一个示例 xml 数组
<cars>
<car>
<id>0001</id>
</car>
<car>
<id>0002</id>
</car>
</cars>
这会变成:
"cars" :
"car" : [
"carId" : "0001"
,
"carId" : "0002"
]
有没有办法像这样序列化数组?
"cars" : [
"carId" : "0001"
,
"carId" : "0002"
]
【问题讨论】:
【参考方案1】:我相信XElement
在处理 xml 时是一个更好的选择,因为它较新。
我写了一个快速代码并进行了测试,它运行良好,可能是它没有很好地优化和理想,但它在这里向您展示了要走的路,希望它会有所帮助。
var xml = @"<cars><car><id>0001</id></car><car><id>0002</id></car></cars>";
XElement doc = XElement.Parse(xml);
var cars = new
cars = (from c in doc.Descendants("car")
select new carid = c.Element("id").Value
).ToList()
;
var json = JsonConvert.SerializeObject(cars);
Console.WriteLine("Json: 0", json.ToString());
只需将复制粘贴到您的控制台应用程序中,看看是否是您要查找的内容。
【讨论】:
以上是关于JsonConvert.SerializeXmlNode() 为数组添加额外的子元素的主要内容,如果未能解决你的问题,请参考以下文章