using System.IO;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Threading.Tasks;
namespace ColdMint.scripts.serialization;
public static class JsonSerialization
{
private static JsonSerializerOptions _options = new JsonSerializerOptions
{
//Case-insensitive attribute matching
//不区分大小写的属性匹配
PropertyNameCaseInsensitive = true,
//Try to avoid escape
//尽量避免转义
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
//Enable smart Print
//启用漂亮打印
WriteIndented = true
};
///
/// Read a Json file to type T
/// 读取一个Json文件到T类型
///
///
///
///
public static async Task ReadJsonFileToObj(string path)
{
await using var openStream = File.OpenRead(path);
return await JsonSerializer.DeserializeAsync(openStream, _options);
}
///
/// Serialize the object to Json
/// 将对象序列化为Json
///
///
///
public static string Serialize(object obj)
{
return JsonSerializer.Serialize(obj, _options);
}
///
/// Deserialize Json to an object
/// 将Json反序列化为对象
///
///
///
///
public static T? Deserialize(string json)
{
return JsonSerializer.Deserialize(json, _options);
}
public static async Task ReadJsonFileToObj(Stream openStream)
{
return await JsonSerializer.DeserializeAsync(openStream, _options);
}
}