Files
linker/linker.libs/extends/SerialzeExtends.cs
2024-11-29 00:49:22 +08:00

52 lines
1.9 KiB
C#

using linker.libs.jsonConverters;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Text.Unicode;
namespace linker.libs.extends
{
public static class SerialzeExtends
{
private static JsonSerializerOptions jsonSerializerOptions1 = new JsonSerializerOptions
{
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All),
AllowTrailingCommas = true,
ReadCommentHandling = JsonCommentHandling.Skip,
PropertyNameCaseInsensitive = true,
Converters = { new IPAddressJsonConverter(), new IPEndpointJsonConverter(), new DateTimeConverter() }
};
private static JsonSerializerOptions jsonSerializerOptions = new JsonSerializerOptions
{
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All),
AllowTrailingCommas = true,
ReadCommentHandling = JsonCommentHandling.Skip,
PropertyNameCaseInsensitive = true,
WriteIndented = true,
Converters = { new IPAddressJsonConverter(), new IPEndpointJsonConverter(), new DateTimeConverter() }
};
public static void AddAOT(JsonSerializerContext[] contexts)
{
foreach (var context in contexts)
{
jsonSerializerOptions1.TypeInfoResolverChain.Insert(0, context);
jsonSerializerOptions.TypeInfoResolverChain.Insert(0, context);
}
}
public static string ToJson(this object obj)
{
return JsonSerializer.Serialize(obj, jsonSerializerOptions1);
}
public static string ToJsonFormat(this object obj)
{
return JsonSerializer.Serialize(obj, jsonSerializerOptions);
}
public static T DeJson<T>(this string json)
{
return JsonSerializer.Deserialize<T>(json, options: jsonSerializerOptions);
}
}
}