diff --git a/Api/Utility/JsonTool.cs b/Api/Utility/JsonTool.cs
index 399b7e3..13fffdc 100644
--- a/Api/Utility/JsonTool.cs
+++ b/Api/Utility/JsonTool.cs
@@ -1,32 +1,54 @@
-using System.Collections;
+using System.Collections;
+using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Json.Serialization;
+using System.Text.Unicode;
using Milimoe.FunGame.Core.Library.Common.Architecture;
-using Milimoe.FunGame.Core.Library.Common.JsonConverter;
using Milimoe.FunGame.Core.Service;
namespace Milimoe.FunGame.Core.Api.Utility
{
///
- /// 创建一个Json工具类
+ /// Json工具类
/// 此工具类拥有单独的序列化选项,支持添加自定义转换器
/// 继承自
///
public class JsonTool
{
///
- /// 序列化选项
+ /// 默认的序列化选项
///
public static JsonSerializerOptions JsonSerializerOptions => JsonManager.GeneralOptions;
+
+ ///
+ /// 序列化选项
+ ///
+ public JsonSerializerOptions Options { get; set; } = new();
+
+ ///
+ /// 创建一个Json工具类
+ /// 此工具类拥有单独的序列化选项,支持添加自定义转换器
+ /// 继承自
+ ///
+ public JsonTool()
+ {
+ Options.WriteIndented = JsonSerializerOptions.WriteIndented;
+ Options.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
+ Options.ReferenceHandler = ReferenceHandler.IgnoreCycles;
+ foreach (JsonConverter converter in JsonSerializerOptions.Converters)
+ {
+ Options.Converters.Add(converter);
+ }
+ }
///
/// 注册一个自定义转换器,支持
///
///
- public static void AddConverter(JsonConverter converter)
+ public void AddConverter(JsonConverter converter)
{
- if (!JsonSerializerOptions.Converters.Contains(converter))
- JsonSerializerOptions.Converters.Add(converter);
+ if (!Options.Converters.Contains(converter))
+ Options.Converters.Add(converter);
}
///
@@ -47,7 +69,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
///
///
///
- public string GetString(T obj) => JsonManager.GetString(obj, JsonSerializerOptions);
+ public string GetString(T obj) => JsonManager.GetString(obj, Options);
///
/// 反序列化Json对象
@@ -55,14 +77,14 @@ namespace Milimoe.FunGame.Core.Api.Utility
///
///
///
- public T? GetObject(string json) => JsonManager.GetObject(json, JsonSerializerOptions);
+ public T? GetObject(string json) => JsonManager.GetObject(json, Options);
///
/// 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别
///
///
///
- public object? GetObject(string json) => JsonManager.GetObject(json, JsonSerializerOptions);
+ public object? GetObject(string json) => JsonManager.GetObject(json, Options);
///
/// 反序列化Hashtable中Key对应的Json对象
@@ -71,7 +93,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
///
///
///
- public T? GetObject(Hashtable table, string key) => JsonManager.GetObject(table, key, JsonSerializerOptions);
+ public T? GetObject(Hashtable table, string key) => JsonManager.GetObject(table, key, Options);
///
/// 反序列化Dictionary中Key对应的Json对象
@@ -80,7 +102,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
///
///
///
- public T? GetObject(Dictionary dict, string key) => JsonManager.GetObject(dict, key, JsonSerializerOptions);
+ public T? GetObject(Dictionary dict, string key) => JsonManager.GetObject(dict, key, Options);
///
/// 反序列化IEnumerable中的Json对象 可指定反序列化选项
@@ -89,7 +111,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
///
///
///
- public T? JsonDeserializeFromIEnumerable(IEnumerable