4

私は JSON シリアル化のために C# (ASP.Net、MVC) と Newtonsoft を使用しています。ビュー用に JSON 形式にしたい以下のような XDocument を取得します。

<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」を検索するときの Google 検索ランクのため、この回答を追加しています。

string json = JsonConvert.SerializeXNode(xDocument);

この回答は、より現代的なXNodevsを使用していますXmlNode

于 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 に答える