forked from project-redbud/FunGame-Core
Update DataRequest Setter (#28)
* Update DataRequest Setter * Fixed some json bug (#29) * JsonManager应是internal的 --------- Co-authored-by: milimoe <110188673+milimoe@users.noreply.github.com>
This commit is contained in:
parent
23c9ade79e
commit
133fef14d7
@ -10,7 +10,17 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
{
|
{
|
||||||
public RequestResult Result => Worker.Result;
|
public RequestResult Result => Worker.Result;
|
||||||
public string Error => Worker.Error;
|
public string Error => Worker.Error;
|
||||||
public object? this[string key] => Worker.ResultData[key];
|
public object? this[string key]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Worker.ResultData[key];
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
AddRequestData(key, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private readonly Request Worker;
|
private readonly Request Worker;
|
||||||
|
|
||||||
@ -19,9 +29,10 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
Worker = new(Socket, RequestType);
|
Worker = new(Socket, RequestType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddRequestData(string key, object value)
|
public void AddRequestData(string key, object? value)
|
||||||
{
|
{
|
||||||
Worker.RequestData.Add(key, value);
|
if (Worker.RequestData.ContainsKey(key)) Worker.RequestData[key] = value;
|
||||||
|
else Worker.RequestData.Add(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RequestResult SendRequest()
|
public RequestResult SendRequest()
|
||||||
|
|||||||
@ -47,10 +47,7 @@ namespace Milimoe.FunGame.Core.Library.Common.Network
|
|||||||
/// <exception cref="IndexOutOfArrayLengthException">索引超过数组上限</exception>
|
/// <exception cref="IndexOutOfArrayLengthException">索引超过数组上限</exception>
|
||||||
public T? GetParam<T>(int index)
|
public T? GetParam<T>(int index)
|
||||||
{
|
{
|
||||||
if (index >= Parameters.Length) throw new IndexOutOfArrayLengthException();
|
return JsonManager.GetObject<T>(this, index);
|
||||||
object obj = Parameters[index];
|
|
||||||
T? result = JsonManager.GetObject<T>(obj.ToString() ?? "");
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Milimoe.FunGame.Core.Library.Common.JsonConverter;
|
using Milimoe.FunGame.Core.Library.Common.JsonConverter;
|
||||||
|
using Milimoe.FunGame.Core.Library.Common.Network;
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Core.Service
|
namespace Milimoe.FunGame.Core.Service
|
||||||
{
|
{
|
||||||
public class JsonManager
|
internal class JsonManager
|
||||||
{
|
{
|
||||||
private static bool _IsFirst = true;
|
private static bool _IsFirst = true;
|
||||||
private readonly static JsonSerializerOptions _GeneralOptions = new()
|
private readonly static JsonSerializerOptions _GeneralOptions = new()
|
||||||
@ -46,7 +47,7 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
/// <param name="obj"></param>
|
/// <param name="obj"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string GetString<T>(T obj)
|
internal static string GetString<T>(T obj)
|
||||||
{
|
{
|
||||||
return JsonSerializer.Serialize(obj, GeneralOptions);
|
return JsonSerializer.Serialize(obj, GeneralOptions);
|
||||||
}
|
}
|
||||||
@ -57,7 +58,7 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
/// <param name="json"></param>
|
/// <param name="json"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static T? GetObject<T>(string json)
|
internal static T? GetObject<T>(string json)
|
||||||
{
|
{
|
||||||
return JsonSerializer.Deserialize<T>(json, GeneralOptions);
|
return JsonSerializer.Deserialize<T>(json, GeneralOptions);
|
||||||
}
|
}
|
||||||
@ -67,7 +68,7 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="json"></param>
|
/// <param name="json"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static object? GetObject(string json)
|
internal static object? GetObject(string json)
|
||||||
{
|
{
|
||||||
return JsonSerializer.Deserialize<object>(json, GeneralOptions);
|
return JsonSerializer.Deserialize<object>(json, GeneralOptions);
|
||||||
}
|
}
|
||||||
@ -79,10 +80,26 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
/// <param name="json"></param>
|
/// <param name="json"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static List<T> GetObjects<T>(string json)
|
internal static List<T> GetObjects<T>(string json)
|
||||||
{
|
{
|
||||||
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>
|
||||||
|
/// 反序列化SocketObject中索引为index的Json对象
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <param name="index"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="IndexOutOfArrayLengthException"></exception>
|
||||||
|
internal static T? GetObject<T>(SocketObject obj, int index)
|
||||||
|
{
|
||||||
|
if (index >= obj.Parameters.Length) throw new IndexOutOfArrayLengthException();
|
||||||
|
JsonElement element = (JsonElement)obj.Parameters[index];
|
||||||
|
T? result = element.Deserialize<T>(GeneralOptions);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user