c# - 使用 C# 将 XDocument 或 XmlDocument 转换为 JSON

标签 c# xml json linq-to-xml json.net

我有这个很棒的 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"}]

最佳答案

使用方法调用

JsonConvert.SerializeXNode(x, Formatting.None, true);

这将省略根节点并且应该创建您期望的内容。

关于c# - 使用 C# 将 XDocument 或 XmlDocument 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26605493/

相关文章:

c# - 打印质量 winform

java - JAVA中如何获取XPath查询结果的父节点

javascript - 如何使用 jquery 获取 Xml 属性?

javascript - 重命名 json 键迭代

C# Emit ,如何编写 if 语句

c# - RegexValidator 验证电子邮件,制作标准属性

c# - 学习 C# 和方法内部的对象让我感到困惑

appengine 上对象的 python 序列化

java - 从 Gson 到 MongoDB 对象的转换器

json - 如何使用 Apache NiFi 在拆分 JSON 后检索属性并在 invokeHttp 处理器中递归使用这些属性?