mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-04-23 12:39:35 +08:00
新的Json处理方法 (#63)
This commit is contained in:
parent
543887881a
commit
47d9813793
@ -125,10 +125,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public static string JsonSerialize<T>(T obj)
|
||||
{
|
||||
return Service.JsonManager.GetString(obj);
|
||||
}
|
||||
public static string JsonSerialize<T>(T obj) => Service.JsonManager.GetString(obj);
|
||||
|
||||
/// <summary>
|
||||
/// 返回目标对象的Json字符串 可指定反序列化选项
|
||||
@ -137,10 +134,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
||||
/// <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);
|
||||
}
|
||||
public static string JsonSerialize<T>(T obj, JsonSerializerOptions options) => Service.JsonManager.GetString(obj, options);
|
||||
|
||||
/// <summary>
|
||||
/// 反序列化Json对象
|
||||
@ -148,10 +142,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public static T? JsonDeserialize<T>(string json)
|
||||
{
|
||||
return Service.JsonManager.GetObject<T>(json);
|
||||
}
|
||||
public static T? JsonDeserialize<T>(string json) => Service.JsonManager.GetObject<T>(json);
|
||||
|
||||
/// <summary>
|
||||
/// 反序列化Json对象 可指定反序列化选项
|
||||
@ -160,10 +151,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
||||
/// <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);
|
||||
}
|
||||
public static T? JsonDeserialize<T>(string json, JsonSerializerOptions options) => Service.JsonManager.GetObject<T>(json, options);
|
||||
|
||||
/// <summary>
|
||||
/// 反序列化Hashtable中的Json对象
|
||||
@ -172,10 +160,26 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
||||
/// <param name="hashtable"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <returns></returns>
|
||||
public static T? JsonDeserializeFromHashtable<T>(Hashtable hashtable, string key)
|
||||
{
|
||||
return Service.JsonManager.GetObject<T>(hashtable, key);
|
||||
}
|
||||
public static T? JsonDeserializeFromHashtable<T>(Hashtable hashtable, string key) => 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>
|
||||
/// 反序列化Hashtable中的Json对象 可指定反序列化选项
|
||||
@ -185,10 +189,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
||||
/// <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);
|
||||
}
|
||||
public static T? JsonDeserializeFromHashtable<T>(Hashtable hashtable, string key, JsonSerializerOptions options) => Service.JsonManager.GetObject<T>(hashtable, key, options);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -75,6 +75,15 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
||||
/// <returns></returns>
|
||||
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>
|
||||
/// 反序列化多个Json对象
|
||||
/// 注意必须是相同的Json对象才可以使用此方法解析
|
||||
@ -91,7 +100,7 @@ namespace Milimoe.FunGame.Core.Api.Utility
|
||||
{
|
||||
WriteIndented = true,
|
||||
ReferenceHandler = ReferenceHandler.IgnoreCycles,
|
||||
Converters = { new DateTimeConverter(), new DataTableConverter(), new DataSetConverter() }
|
||||
Converters = { new DateTimeConverter(), new DataTableConverter(), new DataSetConverter(), new UserConverter(), new RoomConverter() }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
47
Docs/api.xml
47
Docs/api.xml
@ -428,6 +428,25 @@
|
||||
<param name="key"></param>
|
||||
<returns></returns>
|
||||
</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)">
|
||||
<summary>
|
||||
反序列化Hashtable中的Json对象 可指定反序列化选项
|
||||
@ -655,6 +674,15 @@
|
||||
<param name="key"></param>
|
||||
<returns></returns>
|
||||
</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)">
|
||||
<summary>
|
||||
反序列化多个Json对象
|
||||
@ -1931,6 +1959,25 @@
|
||||
<param name="key"></param>
|
||||
<returns></returns>
|
||||
</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)">
|
||||
<summary>
|
||||
反序列化Hashtable中Key对应的Json对象
|
||||
|
@ -54,6 +54,14 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
|
||||
room.RoomType = (RoomType)reader.GetInt64();
|
||||
break;
|
||||
|
||||
case RoomQuery.Column_GameMode:
|
||||
room.GameMode = reader.GetString() ?? "";
|
||||
break;
|
||||
|
||||
case RoomQuery.Column_GameMap:
|
||||
room.GameMap = reader.GetString() ?? "";
|
||||
break;
|
||||
|
||||
case RoomQuery.Column_RoomState:
|
||||
room.RoomState = (RoomState)reader.GetInt64();
|
||||
break;
|
||||
|
@ -122,6 +122,51 @@ namespace Milimoe.FunGame.Core.Service
|
||||
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>
|
||||
/// 反序列化Hashtable中Key对应的Json对象
|
||||
/// </summary>
|
||||
|
Loading…
x
Reference in New Issue
Block a user