新的Json处理方法 (#63)

This commit is contained in:
milimoe 2023-11-28 09:59:17 +08:00 committed by GitHub
parent 543887881a
commit 47d9813793
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 135 additions and 25 deletions

View File

@ -125,10 +125,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <typeparam name="T"></typeparam> /// <typeparam name="T"></typeparam>
/// <param name="obj"></param> /// <param name="obj"></param>
/// <returns></returns> /// <returns></returns>
public static string JsonSerialize<T>(T obj) public static string JsonSerialize<T>(T obj) => Service.JsonManager.GetString(obj);
{
return Service.JsonManager.GetString(obj);
}
/// <summary> /// <summary>
/// 返回目标对象的Json字符串 可指定反序列化选项 /// 返回目标对象的Json字符串 可指定反序列化选项
@ -137,10 +134,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <param name="obj"></param> /// <param name="obj"></param>
/// <param name="options"></param> /// <param name="options"></param>
/// <returns></returns> /// <returns></returns>
public static string JsonSerialize<T>(T obj, JsonSerializerOptions options) public static string JsonSerialize<T>(T obj, JsonSerializerOptions options) => Service.JsonManager.GetString(obj, options);
{
return Service.JsonManager.GetString(obj, options);
}
/// <summary> /// <summary>
/// 反序列化Json对象 /// 反序列化Json对象
@ -148,10 +142,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <typeparam name="T"></typeparam> /// <typeparam name="T"></typeparam>
/// <param name="json"></param> /// <param name="json"></param>
/// <returns></returns> /// <returns></returns>
public static T? JsonDeserialize<T>(string json) public static T? JsonDeserialize<T>(string json) => Service.JsonManager.GetObject<T>(json);
{
return Service.JsonManager.GetObject<T>(json);
}
/// <summary> /// <summary>
/// 反序列化Json对象 可指定反序列化选项 /// 反序列化Json对象 可指定反序列化选项
@ -160,10 +151,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <param name="json"></param> /// <param name="json"></param>
/// <param name="options"></param> /// <param name="options"></param>
/// <returns></returns> /// <returns></returns>
public static T? JsonDeserialize<T>(string json, JsonSerializerOptions options) public static T? JsonDeserialize<T>(string json, JsonSerializerOptions options) => Service.JsonManager.GetObject<T>(json, options);
{
return Service.JsonManager.GetObject<T>(json, options);
}
/// <summary> /// <summary>
/// 反序列化Hashtable中的Json对象 /// 反序列化Hashtable中的Json对象
@ -172,10 +160,26 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <param name="hashtable"></param> /// <param name="hashtable"></param>
/// <param name="key"></param> /// <param name="key"></param>
/// <returns></returns> /// <returns></returns>
public static T? JsonDeserializeFromHashtable<T>(Hashtable hashtable, string key) public static T? JsonDeserializeFromHashtable<T>(Hashtable hashtable, string key) => Service.JsonManager.GetObject<T>(hashtable, key);
{
return Service.JsonManager.GetObject<T>(hashtable, key); /// <summary>
} /// 反序列化IEnumerable中的Json对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="e"></param>
/// <param name="index"></param>
/// <returns></returns>
public static T? JsonDeserializeFromIEnumerable<T>(IEnumerable<object> e, int index) => Service.JsonManager.GetObject<T>(e, index);
/// <summary>
/// 反序列化IEnumerable中的Json对象 可指定反序列化选项
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="e"></param>
/// <param name="index"></param>
/// <param name="options"></param>
/// <returns></returns>
public static T? JsonDeserializeFromIEnumerable<T>(IEnumerable<object> e, int index, JsonSerializerOptions options) => Service.JsonManager.GetObject<T>(e, index, options);
/// <summary> /// <summary>
/// 反序列化Hashtable中的Json对象 可指定反序列化选项 /// 反序列化Hashtable中的Json对象 可指定反序列化选项
@ -185,10 +189,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <param name="key"></param> /// <param name="key"></param>
/// <param name="options"></param> /// <param name="options"></param>
/// <returns></returns> /// <returns></returns>
public static T? JsonDeserializeFromHashtable<T>(Hashtable hashtable, string key, JsonSerializerOptions options) public static T? JsonDeserializeFromHashtable<T>(Hashtable hashtable, string key, JsonSerializerOptions options) => Service.JsonManager.GetObject<T>(hashtable, key, options);
{
return Service.JsonManager.GetObject<T>(hashtable, key, options);
}
} }
#endregion #endregion

View File

@ -75,6 +75,15 @@ namespace Milimoe.FunGame.Core.Api.Utility
/// <returns></returns> /// <returns></returns>
public T? GetObject<T>(Hashtable table, string key) => JsonManager.GetObject<T>(table, key, options); public T? GetObject<T>(Hashtable table, string key) => JsonManager.GetObject<T>(table, key, options);
/// <summary>
/// 反序列化IEnumerable中的Json对象 可指定反序列化选项
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="e"></param>
/// <param name="index"></param>
/// <returns></returns>
public T? JsonDeserializeFromIEnumerable<T>(IEnumerable<object> e, int index) => JsonManager.GetObject<T>(e, index, options);
/// <summary> /// <summary>
/// 反序列化多个Json对象 /// 反序列化多个Json对象
/// 注意必须是相同的Json对象才可以使用此方法解析 /// 注意必须是相同的Json对象才可以使用此方法解析
@ -91,7 +100,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
{ {
WriteIndented = true, WriteIndented = true,
ReferenceHandler = ReferenceHandler.IgnoreCycles, ReferenceHandler = ReferenceHandler.IgnoreCycles,
Converters = { new DateTimeConverter(), new DataTableConverter(), new DataSetConverter() } Converters = { new DateTimeConverter(), new DataTableConverter(), new DataSetConverter(), new UserConverter(), new RoomConverter() }
}; };
} }
} }

View File

@ -428,6 +428,25 @@
<param name="key"></param> <param name="key"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Api.Utility.NetworkUtility.JsonDeserializeFromIEnumerable``1(System.Collections.Generic.IEnumerable{System.Object},System.Int32)">
<summary>
反序列化IEnumerable中的Json对象
</summary>
<typeparam name="T"></typeparam>
<param name="e"></param>
<param name="index"></param>
<returns></returns>
</member>
<member name="M:Milimoe.FunGame.Core.Api.Utility.NetworkUtility.JsonDeserializeFromIEnumerable``1(System.Collections.Generic.IEnumerable{System.Object},System.Int32,System.Text.Json.JsonSerializerOptions)">
<summary>
反序列化IEnumerable中的Json对象 可指定反序列化选项
</summary>
<typeparam name="T"></typeparam>
<param name="e"></param>
<param name="index"></param>
<param name="options"></param>
<returns></returns>
</member>
<member name="M:Milimoe.FunGame.Core.Api.Utility.NetworkUtility.JsonDeserializeFromHashtable``1(System.Collections.Hashtable,System.String,System.Text.Json.JsonSerializerOptions)"> <member name="M:Milimoe.FunGame.Core.Api.Utility.NetworkUtility.JsonDeserializeFromHashtable``1(System.Collections.Hashtable,System.String,System.Text.Json.JsonSerializerOptions)">
<summary> <summary>
反序列化Hashtable中的Json对象 可指定反序列化选项 反序列化Hashtable中的Json对象 可指定反序列化选项
@ -655,6 +674,15 @@
<param name="key"></param> <param name="key"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Api.Utility.JsonTool.JsonDeserializeFromIEnumerable``1(System.Collections.Generic.IEnumerable{System.Object},System.Int32)">
<summary>
反序列化IEnumerable中的Json对象 可指定反序列化选项
</summary>
<typeparam name="T"></typeparam>
<param name="e"></param>
<param name="index"></param>
<returns></returns>
</member>
<member name="M:Milimoe.FunGame.Core.Api.Utility.JsonTool.GetObjects``1(System.String)"> <member name="M:Milimoe.FunGame.Core.Api.Utility.JsonTool.GetObjects``1(System.String)">
<summary> <summary>
反序列化多个Json对象 反序列化多个Json对象
@ -1931,6 +1959,25 @@
<param name="key"></param> <param name="key"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Milimoe.FunGame.Core.Service.JsonManager.GetObject``1(System.Collections.Generic.IEnumerable{System.Object},System.Int32)">
<summary>
反序列化IEnumerable中的Json对象
</summary>
<typeparam name="T"></typeparam>
<param name="e"></param>
<param name="index"></param>
<returns></returns>
</member>
<member name="M:Milimoe.FunGame.Core.Service.JsonManager.GetObject``1(System.Collections.Generic.IEnumerable{System.Object},System.Int32,System.Text.Json.JsonSerializerOptions)">
<summary>
反序列化IEnumerable中的Json对象
</summary>
<typeparam name="T"></typeparam>
<param name="e"></param>
<param name="index"></param>
<param name="options"></param>
<returns></returns>
</member>
<member name="M:Milimoe.FunGame.Core.Service.JsonManager.GetObject``1(System.Collections.Hashtable,System.String,System.Text.Json.JsonSerializerOptions)"> <member name="M:Milimoe.FunGame.Core.Service.JsonManager.GetObject``1(System.Collections.Hashtable,System.String,System.Text.Json.JsonSerializerOptions)">
<summary> <summary>
反序列化Hashtable中Key对应的Json对象 反序列化Hashtable中Key对应的Json对象

View File

@ -54,6 +54,14 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
room.RoomType = (RoomType)reader.GetInt64(); room.RoomType = (RoomType)reader.GetInt64();
break; break;
case RoomQuery.Column_GameMode:
room.GameMode = reader.GetString() ?? "";
break;
case RoomQuery.Column_GameMap:
room.GameMap = reader.GetString() ?? "";
break;
case RoomQuery.Column_RoomState: case RoomQuery.Column_RoomState:
room.RoomState = (RoomState)reader.GetInt64(); room.RoomState = (RoomState)reader.GetInt64();
break; break;

View File

@ -122,6 +122,51 @@ namespace Milimoe.FunGame.Core.Service
return default; return default;
} }
/// <summary>
/// 反序列化IEnumerable中的Json对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="e"></param>
/// <param name="index"></param>
/// <returns></returns>
internal static T? GetObject<T>(IEnumerable<object> e, int index)
{
IEnumerable<JsonElement> elements = e.Cast<JsonElement>();
if (elements.Count() > index)
{
JsonElement? element = (JsonElement?)elements.ElementAt(index);
if (element != null)
{
T? result = ((JsonElement)element).Deserialize<T>(GeneralOptions);
return result;
}
}
return default;
}
/// <summary>
/// 反序列化IEnumerable中的Json对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="e"></param>
/// <param name="index"></param>
/// <param name="options"></param>
/// <returns></returns>
internal static T? GetObject<T>(IEnumerable<object> e, int index, JsonSerializerOptions options)
{
IEnumerable<JsonElement> elements = e.Cast<JsonElement>();
if (elements.Count() > index)
{
JsonElement? element = (JsonElement?)elements.ElementAt(index);
if (element != null)
{
T? result = ((JsonElement)element).Deserialize<T>(options);
return result;
}
}
return default;
}
/// <summary> /// <summary>
/// 反序列化Hashtable中Key对应的Json对象 /// 反序列化Hashtable中Key对应的Json对象
/// </summary> /// </summary>