Files
ArrowBeatTap-Gp/Assets/SGModule/Net/SGModule/Scripts/WebSocket/WebSocketTools.cs
T

71 lines
2.5 KiB
C#
Raw Normal View History

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SGModule.Common.Helper;
public class WebSocketTools {
// 反序列化函数,返回 ResponseData 对象
public static ResponseData DeserializeResponse(string jsonMessage) {
try {
return JsonConvert.DeserializeObject<ResponseData>(jsonMessage);
}
catch (JsonException ex) {
Log.Net.Error($"Failed to deserialize response: {ex.Message}");
return null;
}
}
// 处理数据函数
public static void ProcessResponseData(ResponseData responseData) {
// 处理请求成功的情况
if (responseData.Body.Code == 0) {
Log.Net.Info("Request succeeded");
HandleData(responseData.Body.Data); // 不传入类型时,先默认不解析
}
else {
Log.Net.Error($"Request failed: {responseData.Body.Msg}");
}
}
// 泛型版本的 HandleData,允许外部传入一个类型
public static void HandleData(JToken data) {
// 检查 data 是否为空对象
if (data.Type == JTokenType.Object && !data.HasValues) {
Log.Net.Info("Data is empty");
// 可根据需要进一步处理空数据的情况
}
else {
// 如果 data 包含有效数据,打印或进一步处理
Log.Net.Info("Received data: " + data);
ProcessValidData(data);
}
}
// 泛型版本的 HandleData,传入类型进行解析
public static void HandleData<T>(JToken data) {
if (data != null) {
try {
var parsedData = data.ToObject<T>(); // 将 data 解析为指定类型
Log.Net.Info("Parsed data: " + JsonConvert.SerializeObject(parsedData));
ProcessValidData(parsedData); // 进一步处理解析后的数据
}
catch (JsonException ex) {
Log.Net.Error($"Failed to parse data to type {typeof(T)}: {ex.Message}");
}
}
else {
Log.Net.Warning("Data is null, cannot parse.");
}
}
// 处理解析后的 data 类型
public static void ProcessValidData<T>(T parsedData) {
if (parsedData != null) {
// 在这里可以对解析后的 data 进行具体处理
Log.Net.Info("Successfully processed data: " + parsedData);
}
else {
Log.Net.Warning("Parsed data is null, cannot process.");
}
}
}