71 lines
2.5 KiB
C#
71 lines
2.5 KiB
C#
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.");
|
|
}
|
|
}
|
|
}
|