小编San*_*son的帖子

在.Net Core 3.1 Web Api项目中使用System.Text.Json将XmlDocument序列化为Json

我正在 .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)

.net 小提琴手示例

结果

Xml: <root><items><item id="1">item …
Run Code Online (Sandbox Code Playgroud)

c# xmldocument json.net system.text.json asp.net-core-3.1

5
推荐指数
0
解决办法
6142
查看次数