San*_*son 5 c# xmldocument json.net system.text.json asp.net-core-3.1
我正在 .net Core 3.1 Web api 项目中从 Newtonsoft.Json 切换到 System.Text.Json。该项目是一个遗留的 .net core Web api 项目,拥有数百个客户端。某些控制器端点返回 XmlDocuments。使用 Newtonsoft.Json 将 XmlDocuments 序列化为 Json 工作正常并给出了预期结果。不幸的是,当切换到 System.Text.Json 时,序列化的工作方式有所不同。
例子 ;使用 System.Xml;
public class Program
{
public static void Main()
{
var xml = @"<root><items><item id=""1"">item 1</item><item id=""2"">item 2</item></items></root>";
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
Console.WriteLine($"Xml: {xml}");
Console.WriteLine($"XmlDocument xml: {xmlDoc.ToString()}");
var serializedXml = System.Text.Json.JsonSerializer.Serialize(xmlDoc);
Console.WriteLine($"Serialized xml using System.Text.Json: {serializedXml}");
serializedXml = Newtonsoft.Json.JsonConvert.SerializeObject(xmlDoc);
Console.WriteLine($"Serialized xml using Newtonsoft.Json: {serializedXml}");
}
}
Run Code Online (Sandbox Code Playgroud)
结果
Xml: <root><items><item id="1">item 1</item><item id="2">item 2</item></items></root>
XmlDocument xml: System.Xml.XmlDocument
Serialized xml using System.Text.Json: [[[[[]],[[]]]]]
Serialized xml using Newtonsoft.Json: {"root":{"items":{"item":[{"@id":"1","#text":"item 1"},
{"@id":"2","#text":"item 2"}]}}}
Run Code Online (Sandbox Code Playgroud)
除了以下方法之外,还有什么方法可以使用 System.Text.Json 自动序列化 .net Core 3.1 Web api 中的 XmlDocuments:
| 归档时间: |
|
| 查看次数: |
6142 次 |
| 最近记录: |