feat: initial commit - HJHA game server full source
6 major server modules (PdkFriendServer/GlobalSever/ServerCore/GameModule/GameNetModule) + game logic (GameFix/GameDAL/ServerData) + network layer (NetWorkMessage) + data layer (ObjectModel) + utilities (MrWu/Core/Config/CloudAPI/dll) + adapters (zyxAdapter/base) .NET 8.0 C# solution, 16 projects, 958 source files
This commit is contained in:
96
GlobalSever/GlobalManager/JsonExtensions.cs
Normal file
96
GlobalSever/GlobalManager/JsonExtensions.cs
Normal file
@ -0,0 +1,96 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
/// <summary>
|
||||
/// JsonExtensions
|
||||
/// </summary>
|
||||
public static class JsonExtensions {
|
||||
|
||||
/// <summary>
|
||||
/// TryGetValue
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="jobj"></param>
|
||||
/// <param name="propertyName"></param>
|
||||
/// <param name="valueIfnotexist"></param>
|
||||
/// <returns></returns>
|
||||
public static T GetValueOrDefault<T>(this JObject jobj, string propertyName, T valueIfnotexist = default(T)) {
|
||||
if (jobj.TryGetValue(propertyName, out var value)) {
|
||||
return value.ToObject<T>();
|
||||
}
|
||||
return valueIfnotexist;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// TryGetValue
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="jobj"></param>
|
||||
/// <param name="propertyName"></param>
|
||||
/// <param name="tokenType"></param>
|
||||
/// <param name="valueIfnotexist"></param>
|
||||
/// <returns></returns>
|
||||
public static T GetValueOrDefault<T>(this JObject jobj, string propertyName, JTokenType tokenType, T valueIfnotexist = default(T)) {
|
||||
if (jobj.TryGetValue(propertyName, out var value) && value.Type == tokenType) {
|
||||
return value.ToObject<T>();
|
||||
}
|
||||
return valueIfnotexist;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// TryGetValue
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="jobj"></param>
|
||||
/// <param name="propertyName"></param>
|
||||
/// <param name="tokenType"></param>
|
||||
/// <param name="outValue"></param>
|
||||
/// <returns></returns>
|
||||
public static bool TryGetValue<T>(this JObject jobj, string propertyName, JTokenType tokenType, out T outValue) {
|
||||
outValue = default(T);
|
||||
if (jobj.TryGetValue(propertyName, out var value) && value.Type == tokenType) {
|
||||
outValue = value.ToObject<T>();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="instance"></param>
|
||||
/// <returns></returns>
|
||||
public static JToken ToJson(this object instance) => JToken.FromObject(instance);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="instance"></param>
|
||||
/// <returns></returns>
|
||||
public static string ToJsonString(this object instance) => JToken.FromObject(instance).ToString(Formatting.None);
|
||||
|
||||
/// <summary>
|
||||
/// parse json string then Deserialze to object
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="str"></param>
|
||||
/// <returns></returns>
|
||||
public static T ParseJsonToObject<T>(this string str) => JToken.Parse(str).ToObject<T>();
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="instance"></param>
|
||||
/// <returns></returns>
|
||||
public static JObject ToJObject(this object instance) => JObject.FromObject(instance);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="instances"></param>
|
||||
/// <returns></returns>
|
||||
public static JArray ToJArray(this IEnumerable instances) => JArray.FromObject(instances);
|
||||
}
|
||||
Reference in New Issue
Block a user