JsonConvert.SerializeXmlNode() 为数组添加额外的 child
JsonConvert.SerializeXmlNode() adds extra child for arrays
我正在使用 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"
}
]
}
我相信 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() 序列化一个 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"
}
]
}
我相信 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());
只需在您的控制台应用程序中复制粘贴,看看这是否是您要查找的内容。