【发布时间】:2014-10-28 10:03:40
【问题描述】:
我有这个很棒的 XML:
<Products>
<Product ProductCode="C1010" CategoryName="Coins" />
<Product ProductCode="C1012" CategoryName="Coins" />
<Product ProductCode="C1013" CategoryName="Coins" />
</Products>
但它输出到这个 JSON:
{"Products":{"Product":[{"@ProductCode":"C1010","@CategoryName":"Coins"},
{"@ProductCode":"C1012","@CategoryName":"Coins"},
{"@ProductCode":"C1013","@CategoryName":"Coins"}]}}
我希望我的 json 中没有“产品”子级别,因为所有三行都是产品。这是我的 C# 代码:
//x is an XDocument.
JsonConvert.SerializeXNode(x, Formatting.None, false)
//JsonConvert.SerializeXNode(x); //I also tried without the formatting and the boolean.
当我将 XDocument '转换' 为 XmlDocument 并使用时:
var xmlDocument = new System.Xml.XmlDocument();
using (var xmlReader = x.CreateReader())
{
xmlDocument.Load(xmlReader);
}
JsonConvert.SerializeXmNode(xmlDocument);
它给了我完全相同的输出。那么如何修改我的 JSON 解析,以便我有一个简单的产品列表。我更喜欢最干净的解决方案。
为了更清楚一点,我想输出这样的东西:
[{"@ProductCode":"C1010","@CategoryName":"Coins"},
{"@ProductCode":"C1012","@CategoryName":"Coins"},
{"@ProductCode":"C1013","@CategoryName":"Coins"}]
【问题讨论】:
-
您可能知道,
JSON-output 代表XML-input。要改变它,你就是在“破坏”它。 -
你试过打电话给
JsonConvert.SerializeXNode(x, Formatting.None, true)吗?应该省略根节点。 -
大声笑,翻转布尔值正是我所需要的!谢谢@Jehof
标签: c# xml json linq-to-xml json.net