38 lines
1.0 KiB
C#
38 lines
1.0 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Text.Json;
|
|
using System.Xml.Serialization;
|
|
|
|
namespace XSDVisualiser.Utils
|
|
{
|
|
public static class Serialization
|
|
{
|
|
private static readonly JsonSerializerOptions JsonOptions = new()
|
|
{
|
|
WriteIndented = true,
|
|
DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull
|
|
};
|
|
|
|
public static string ToXml<T>(T obj)
|
|
{
|
|
var serializer = new XmlSerializer(typeof(T));
|
|
var ns = new XmlSerializerNamespaces();
|
|
ns.Add(string.Empty, string.Empty);
|
|
using var sw = new Utf8StringWriter();
|
|
serializer.Serialize(sw, obj, ns);
|
|
return sw.ToString();
|
|
}
|
|
|
|
public static string ToJson<T>(T obj)
|
|
{
|
|
return JsonSerializer.Serialize(obj, JsonOptions);
|
|
}
|
|
|
|
private sealed class Utf8StringWriter : StringWriter
|
|
{
|
|
public override Encoding Encoding => Encoding.UTF8;
|
|
}
|
|
}
|
|
}
|