mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-04-22 03:59:35 +08:00
向Utility添加更多Json相关方法 (#45)
This commit is contained in:
parent
9631267010
commit
9fb45dc502
@ -1,6 +1,7 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Net.NetworkInformation;
|
using System.Net.NetworkInformation;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
using System.Text.Json;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using Milimoe.FunGame.Core.Library.Common.Architecture;
|
using Milimoe.FunGame.Core.Library.Common.Architecture;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
@ -128,6 +129,18 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
return Service.JsonManager.GetString(obj);
|
return Service.JsonManager.GetString(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 返回目标对象的Json字符串 可指定反序列化选项
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string JsonSerialize<T>(T obj, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
return Service.JsonManager.GetString(obj, options);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 反序列化Json对象
|
/// 反序列化Json对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -139,6 +152,18 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
return Service.JsonManager.GetObject<T>(json);
|
return Service.JsonManager.GetObject<T>(json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 反序列化Json对象 可指定反序列化选项
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="json"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static T? JsonDeserialize<T>(string json, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
return Service.JsonManager.GetObject<T>(json, options);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 反序列化Hashtable中的Json对象
|
/// 反序列化Hashtable中的Json对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -148,7 +173,20 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static T? JsonDeserializeFromHashtable<T>(Hashtable hashtable, string key)
|
public static T? JsonDeserializeFromHashtable<T>(Hashtable hashtable, string key)
|
||||||
{
|
{
|
||||||
return Transmittal.DataRequest.GetHashtableJsonObject<T>(hashtable, key);
|
return Service.JsonManager.GetObject<T>(hashtable, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 反序列化Hashtable中的Json对象 可指定反序列化选项
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="hashtable"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static T? JsonDeserializeFromHashtable<T>(Hashtable hashtable, string key, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
return Service.JsonManager.GetObject<T>(hashtable, key, options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,6 +38,18 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
return JsonSerializer.Serialize(obj, GeneralOptions);
|
return JsonSerializer.Serialize(obj, GeneralOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取Json字符串
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal static string GetString<T>(T obj, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
return JsonSerializer.Serialize(obj, options);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 反序列化Json对象
|
/// 反序列化Json对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -49,6 +61,18 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
return JsonSerializer.Deserialize<T>(json, GeneralOptions);
|
return JsonSerializer.Deserialize<T>(json, GeneralOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 反序列化Json对象
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="json"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal static T? GetObject<T>(string json, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
return JsonSerializer.Deserialize<T>(json, options);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别
|
/// 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -59,6 +83,18 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
return JsonSerializer.Deserialize<object>(json, GeneralOptions);
|
return JsonSerializer.Deserialize<object>(json, GeneralOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="json"></param>
|
||||||
|
/// <param name=""></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal static object? GetObject(string json, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
return JsonSerializer.Deserialize<object>(json, options);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 反序列化SocketObject中索引为index的Json对象
|
/// 反序列化SocketObject中索引为index的Json对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -96,6 +132,28 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
return default;
|
return default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 反序列化Hashtable中Key对应的Json对象
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="table"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal static T? GetObject<T>(Hashtable table, string key, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
if (table.ContainsKey(key))
|
||||||
|
{
|
||||||
|
JsonElement? element = (JsonElement?)table[key];
|
||||||
|
if (element != null)
|
||||||
|
{
|
||||||
|
T? result = ((JsonElement)element).Deserialize<T>(options);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 反序列化多个Json对象
|
/// 反序列化多个Json对象
|
||||||
/// 注意必须是相同的Json对象才可以使用此方法解析
|
/// 注意必须是相同的Json对象才可以使用此方法解析
|
||||||
@ -108,5 +166,19 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
json = "[" + json.Replace("}{", "},{") + "]"; // 将Json字符串转换为数组
|
json = "[" + json.Replace("}{", "},{") + "]"; // 将Json字符串转换为数组
|
||||||
return JsonSerializer.Deserialize<List<T>>(json, GeneralOptions) ?? new List<T>();
|
return JsonSerializer.Deserialize<List<T>>(json, GeneralOptions) ?? new List<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 反序列化多个Json对象
|
||||||
|
/// 注意必须是相同的Json对象才可以使用此方法解析
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="json"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
internal static List<T> GetObjects<T>(string json, JsonSerializerOptions options)
|
||||||
|
{
|
||||||
|
json = "[" + json.Replace("}{", "},{") + "]"; // 将Json字符串转换为数组
|
||||||
|
return JsonSerializer.Deserialize<List<T>>(json, options) ?? new List<T>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user