mirror of
https://github.com/snltty/linker.git
synced 2025-10-09 11:01:54 +08:00
52 lines
1.9 KiB
C#
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);
|
|
}
|
|
}
|
|
|
|
|
|
}
|