4

我正在使用 C#(ASP.Net、MVC)和 Newtonsoft 进行 JSON 序列化。我得到了一个类似于下面的 XDocument,我希望它是 JSON 格式的,用于视图。

<group>
  <name>Group 1</name>
  <description><p>Description</p></description>
  <section>
    ..
  </section>
  <section>
    ..
  </section>
</group>

我有一个这样的扩展

private static readonly JsonSerializer jSerializer = JsonSerializer.Create(new JsonSerializerSettings {});

public static string ToJson(this object obj) {
  using (StringWriter writer = new StringWriter()) {
    jSerializer.Serialize(writer, obj);
    return writer.ToString();
  }
}

现在的问题是,描述被反序列化了,所以我有类似的东西

... "description": { "p": "Description Text" }

当按原样发布时,它将显示为“[Object object]”。

  • 有没有办法为 XDocument 设置一些 JsonProperties(通常),而不生成完全反序列化的类?
  • 如果没有,有没有办法设置一些 JsonProperty 说“将其保留为字符串,不要进一步序列化”
  • 如果我为此使用 XSD 生成的类,我需要设置什么“类型”?“随便哪种”?

帮助将不胜感激,最好的问候。

4

2 回答 2

6

我添加这个答案是因为它在查找“c# convert xml to json XDocument”时的谷歌搜索排名。

string json = JsonConvert.SerializeXNode(xDocument);

这个答案使用更现代的XNodevsXmlNode

于 2019-05-22T20:38:03.753 回答
4

使用 Json.NET,您可以使用以下行将 XML 节点直接序列化为 JSON:

string json = JsonConvert.SerializeXmlNode(xmlNode);

转换你XDocument看到XmlDocument这个问题:

将 XDocument 转换为 XmlDocument,反之亦然

然后,您可以使用您转换XmlDocument的作为参数,SerializeXmlNode()因为它继承自XmlNode.

于 2012-08-08T15:32:48.303 回答