C# 将JSON数组转换为XML
我正在尝试将JSON转换为XML。My JSON包含一系列汽车,每辆汽车都有一系列功能:C# 将JSON数组转换为XML,c#,arrays,json,xml,json.net,C#,Arrays,Json,Xml,Json.net,我正在尝试将JSON转换为XML。My JSON包含一系列汽车,每辆汽车都有一系列功能: [ { "car": { "features": [{ "code": "1" }, { "code": "2" }] } }, { "car": { "features": [
[
{
"car": {
"features": [{
"code": "1"
}, {
"code": "2"
}]
}
},
{
"car": {
"features": [{
"code": "3"
}, {
"code": "2"
}]
}
}
]
我正在将其转换为XML:
// the tag name for each top level element in the json array
var wrappedDocument = string.Format("{{ car: {0} }}", jsonResult);
// set the root tag name
return JsonConvert.DeserializeXmlNode(wrappedDocument, "cars");
这是生成的XML:
<cars>
<car>
<features>
<code>1</code>
</features>
<features>
<code>2</code>
</features>
</car>
<car>
<features>
<code>3</code>
</features>
<features>
<code>2</code>
</features>
</car>
</cars>
我的问题是,我希望所有的“特性”都列在一个公共元素下,就像“car”列在“cars”下一样,因此XML将如下所示:
<cars>
<car>
<features>
<feature>
<code>1</code>
</feature>
<feature>
<code>2</code>
</feature>
</features>
</car>
<car>
<features>
<feature>
<code>3</code>
</feature>
<feature>
<code>2</code>
</feature>
</features>
</car>
</cars>
var ja = JArray.Parse(jsonResult);
var xml = new XDocument(
new XElement("cars",
ja.Select(c =>
new XElement("car",
new XElement("features",
c["car"]["features"].Select(f =>
new XElement("feature",
new XElement("code", (string)f["code"])
)
)
)
)
)
)
);
Console.WriteLine(xml.ToString());
使用Newtonsoft Json.NET是否可以实现这一点?谢谢你的帮助 反序列化xmlnode()
实际上没有办法定制JSON到XML转换的方式。要使用该方法获得想要的结果,您必须在将JSON转换为XML之前操作JSON,或者在转换之后操作XML
在这种情况下,我认为使用Json.Net直接从Json以您想要的形状构建XML可能更容易。您可以这样做:
<cars>
<car>
<features>
<feature>
<code>1</code>
</feature>
<feature>
<code>2</code>
</feature>
</features>
</car>
<car>
<features>
<feature>
<code>3</code>
</feature>
<feature>
<code>2</code>
</feature>
</features>
</car>
</cars>
var ja = JArray.Parse(jsonResult);
var xml = new XDocument(
new XElement("cars",
ja.Select(c =>
new XElement("car",
new XElement("features",
c["car"]["features"].Select(f =>
new XElement("feature",
new XElement("code", (string)f["code"])
)
)
)
)
)
)
);
Console.WriteLine(xml.ToString());
Fiddle:有了一个开源库,只需几行代码就可以轻松地将Xml转换为Json
string json = @"
[
{
""car"": {
""features"": [{
""code"": ""1""
}, {
""code"": ""2""
}]
}
},
{
""car"": {
""features"": [{
""code"": ""3""
}, {
""code"": ""2""
}]
}
}
]";
StringBuilder sb = new StringBuilder();
using (var p = ChoJSONReader.LoadText(json))
{
using (var w = new ChoXmlWriter(sb)
.Configure(c => c.RootName = "cars")
//.Configure(c => c.IgnoreRootName = true)
.Configure(c => c.IgnoreNodeName = true)
)
{
w.Write(p);
}
}
Console.WriteLine(sb.ToString());
输出:
<cars>
<car>
<features>
<feature>
<code>1</code>
</feature>
<feature>
<code>2</code>
</feature>
</features>
</car>
<car>
<features>
<feature>
<code>3</code>
</feature>
<feature>
<code>2</code>
</feature>
</features>
</car>
</cars>
签出CodeProject文章以获取更多帮助
免责声明:我是此库的作者。Json包含错误。。纠正它!!。。现在已经更正了,对不起,我不该手写的。