53 lines
1.8 KiB
C#
53 lines
1.8 KiB
C#
|
using System.IO;
|
|||
|
using System.Text;
|
|||
|
using System.Text.Json;
|
|||
|
|
|||
|
namespace WebApplication1.Data.Helpers
|
|||
|
{
|
|||
|
|
|||
|
public class JsonFileHelper
|
|||
|
{
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 序列化选项
|
|||
|
/// </summary>
|
|||
|
private static readonly JsonSerializerOptions serializerOptions = new() { WriteIndented = true }; // 序列化选项
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 将数据存为Json字符串文件
|
|||
|
/// </summary>
|
|||
|
/// <param name="path">路径</param>
|
|||
|
/// <param name="fileName">文件名</param>
|
|||
|
/// <param name="data">数据</param>
|
|||
|
public static void Save<T>(string path, string fileName, T data)
|
|||
|
{
|
|||
|
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
|
|||
|
var fullPath = Path.Combine(path, fileName.EndsWith(".json") ? fileName : $"{fileName}.json");
|
|||
|
|
|||
|
string json = JsonSerializer.Serialize(data ?? default, serializerOptions);
|
|||
|
File.WriteAllText(fullPath, json, Encoding.UTF8);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 读取Json文件,返回指定类型的数据
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">返回的数据类型</typeparam>
|
|||
|
/// <param name="path">路径</param>
|
|||
|
/// <param name="fileName">文件名</param>
|
|||
|
/// <returns>返回的数据</returns>
|
|||
|
public static T Read<T>(string path, string fileName)
|
|||
|
{
|
|||
|
var fullPath = Path.Combine(path, fileName.EndsWith(".json") ? fileName : $"{fileName}.json");
|
|||
|
T data = default;
|
|||
|
if (File.Exists(fullPath))
|
|||
|
{
|
|||
|
var jsonString = File.ReadAllText(fullPath, Encoding.UTF8);
|
|||
|
if (!string.IsNullOrEmpty(jsonString)) data = JsonSerializer.Deserialize<T>(jsonString);
|
|||
|
}
|
|||
|
return data;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|