【问题标题】:XML String with no parent node to JSON with C#使用 C# 将没有父节点的 XML 字符串转换为 JSON
【发布时间】:2016-06-27 10:07:29
【问题描述】:

我有一个不包含父节点的 XML 字符串。此 XML 表示对 API 的 json 请求。这似乎毫无意义,但这样做是为了让非程序员更容易阅读文件。为了将 XML 转换为 json,我所看到的几乎所有内容都说将字符串转换为 XMLDocument,然后使用以下内容获取 json。

string jsonText = JsonConvert.SerializeXmlNode(doc);

我在这里遇到的问题是 xml 不是真正有效的,因此,它无法转换为 xml 文档。我真正想要的是能够做到这一点。

string jsonText = JsonConvert.SerializeXmlNode(doc.InnerXml);

这不起作用,因为 innerXML 是字符串而不是对象。我已经能够通过创建一个根元素然后只使用一个子字符串来剪切生成的字符串来使其工作,但这似乎毫无意义。必须有一种更好的方法来做到这一点,而不必添加 xml,之后只需将其从 json 中删除。是否可以将如下 xml 之类的 xml 转换为 json ,如下例所示。

<rootnode>
    <fielda>a</fielda>
    <fieldb>b</fieldb>
</rootnode>

转换为

  {
    "fielda": "a",
    "fieldb": "b"
  }

【问题讨论】:

标签: c# json xml


【解决方案1】:

有一个overload of SerializeXmlNode 接受布尔值omitRootObject

string jsonText = JsonConvert.SerializeXmlNode(doc, Formatting.None, true);

【讨论】:

    【解决方案2】:

    JsonConvert.SerializeXmlNode 有一个重载方法,您可以使用它来忽略 root。

    string jsonText = JsonConvert.SerializeXmlNode(doc, Formatting.None, true);
    

    第三个参数用于省略RootObject

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2013-02-17
      • 2012-10-26
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多