没有使用C#的JSON父节点的XML字符串

时间:2016-06-27 10:07:30

标签: c# json xml

我有一个不包含父节点的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"
  }

2 个答案:

答案 0 :(得分:3)

overload of SerializeXmlNode采用布尔值omitRootObject

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

答案 1 :(得分:1)

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

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

第三个参数用于省略RootObject