using System.Text.Json;
using System.Text.Json.Serialization;
using Milimoe.FunGame.Core.Library.Common.JsonConverter;
using Milimoe.FunGame.Core.Library.Common.Network;
namespace Milimoe.FunGame.Core.Service
{
internal class JsonManager
{
private static bool _IsFirst = true;
private readonly static JsonSerializerOptions _GeneralOptions = new()
{
WriteIndented = true,
ReferenceHandler = ReferenceHandler.IgnoreCycles
};
///
/// 默认的JsonSerializerOptions
///
internal static JsonSerializerOptions GeneralOptions
{
get
{
if (_IsFirst)
{
// 首次使用时,向其添加自定义转换器
_IsFirst = false;
AddConverter(new DataSetConverter());
AddConverter(new DateTimeConverter());
}
return _GeneralOptions;
}
}
///
/// 注册一个自定义转换器
///
///
internal static void AddConverter(JsonConverter converter)
{
_GeneralOptions.Converters.Add(converter);
}
///
/// 获取Json字符串
///
///
///
///
internal static string GetString(T obj)
{
return JsonSerializer.Serialize(obj, GeneralOptions);
}
///
/// 反序列化Json对象
///
///
///
///
internal static T? GetObject(string json)
{
return JsonSerializer.Deserialize(json, GeneralOptions);
}
///
/// 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别
///
///
///
internal static object? GetObject(string json)
{
return JsonSerializer.Deserialize