using System.Collections;
using System.Text.Json;
using System.Text.Json.Serialization;
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工具类
/// 此工具类拥有单独的序列化选项,支持添加自定义转换器
/// 继承自
///
public class JsonTool
{
///
/// 序列化选项
/// 已经默认添加了下列转换器:
/// , ,
///
public JsonSerializerOptions JsonSerializerOptions => options;
///
/// 注册一个自定义转换器,支持
///
///
public void AddConverter(JsonConverter converter)
{
if (!JsonSerializerOptions.Converters.Contains(converter))
JsonSerializerOptions.Converters.Add(converter);
}
///
/// 注册多个自定义转换器,支持
///
///
public void AddConverters(IEnumerable converters)
{
foreach (JsonConverter converter in converters)
{
AddConverter(converter);
}
}
///
/// 获取Json字符串
///
///
///
///
public string GetString(T obj) => JsonManager.GetString(obj, options);
///
/// 反序列化Json对象
///
///
///
///
public T? GetObject(string json) => JsonManager.GetObject(json, options);
///
/// 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别
///
///
///
public object? GetObject(string json) => JsonManager.GetObject(json, options);
///
/// 反序列化Hashtable中Key对应的Json对象
///
///
///
///
///
public T? GetObject(Hashtable table, string key) => JsonManager.GetObject(table, key, options);
///
/// 反序列化IEnumerable中的Json对象 可指定反序列化选项
///
///
///
///
///
public T? JsonDeserializeFromIEnumerable(IEnumerable