我正在 .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 …Run Code Online (Sandbox Code Playgroud)