GeWuYou fb14d7122c docs(style): 更新文档中的命名空间导入格式
- 将所有小写的命名空间导入更正为首字母大写格式
- 统一 GFramework 框架的命名空间引用规范
- 修复 core、ecs、godot 等模块的命名空间导入错误
- 标准化文档示例代码中的 using 语句格式
- 确保所有文档中的命名空间引用保持一致性
- 更新 global using 语句以匹配正确的命名空间格式
2026-03-10 07:18:49 +08:00

59 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using GFramework.Core.Abstractions.Serializer;
using Newtonsoft.Json;
namespace GFramework.Game.Serializer;
/// <summary>
/// JSON序列化器实现类用于将对象序列化为JSON字符串或将JSON字符串反序列化为对象
/// </summary>
public sealed class JsonSerializer
: IRuntimeTypeSerializer
{
/// <summary>
/// 将指定类型的对象序列化为JSON字符串
/// </summary>
/// <typeparam name="T">要序列化的对象类型</typeparam>
/// <param name="value">要序列化的对象实例</param>
/// <returns>序列化后的JSON字符串</returns>
public string Serialize<T>(T value)
{
return JsonConvert.SerializeObject(value);
}
/// <summary>
/// 将JSON字符串反序列化为指定类型的对象
/// </summary>
/// <typeparam name="T">要反序列化的目标类型</typeparam>
/// <param name="data">要反序列化的JSON字符串数据</param>
/// <returns>反序列化后的对象实例</returns>
/// <exception cref="ArgumentException">当无法反序列化数据时抛出</exception>
public T Deserialize<T>(string data)
{
return JsonConvert.DeserializeObject<T>(data)
?? throw new ArgumentException("Cannot deserialize data");
}
/// <summary>
/// 将对象序列化为JSON字符串使用运行时类型
/// </summary>
/// <param name="obj">要序列化的对象实例</param>
/// <param name="type">对象的运行时类型</param>
/// <returns>序列化后的JSON字符串</returns>
public string Serialize(object obj, Type type)
{
return JsonConvert.SerializeObject(obj, type, null);
}
/// <summary>
/// 将JSON字符串反序列化为指定类型的对象使用运行时类型
/// </summary>
/// <param name="data">要反序列化的JSON字符串数据</param>
/// <param name="type">反序列化目标类型</param>
/// <returns>反序列化后的对象实例</returns>
/// <exception cref="ArgumentException">当无法反序列化到指定类型时抛出</exception>
public object Deserialize(string data, Type type)
{
return JsonConvert.DeserializeObject(data, type)
?? throw new ArgumentException($"Cannot deserialize to {type.Name}");
}
}