using Newtonsoft.Json;
namespace QYZH.InteractiveMagazine.Common.Helpers
{
///
/// JSON工具类
///
public static class JsonHelper
{
///
/// JSON序列化设置
///
private static readonly JsonSerializerSettings _settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
DateFormatString = "yyyy-MM-dd HH:mm:ss",
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
///
/// 将对象序列化为JSON字符串
///
/// 对象
/// JSON字符串
public static string Serialize(object obj)
{
if (obj == null)
{
return string.Empty;
}
return JsonConvert.SerializeObject(obj, _settings);
}
///
/// 将对象序列化为格式化的JSON字符串
///
/// 对象
/// 格式化的JSON字符串
public static string SerializePretty(object obj)
{
if (obj == null)
{
return string.Empty;
}
return JsonConvert.SerializeObject(obj, Formatting.Indented, _settings);
}
///
/// 将JSON字符串反序列化为指定类型
///
/// 目标类型
/// JSON字符串
/// 反序列化后的对象
public static T? Deserialize(string json)
{
if (string.IsNullOrWhiteSpace(json))
{
return default;
}
return JsonConvert.DeserializeObject(json, _settings);
}
///
/// 将JSON字符串反序列化为指定类型(带异常处理)
///
/// 目标类型
/// JSON字符串
/// 反序列化失败时的默认值
/// 反序列化后的对象或默认值
public static T? TryDeserialize(string json, T? defaultValue = default)
{
if (string.IsNullOrWhiteSpace(json))
{
return defaultValue;
}
try
{
T? result = JsonConvert.DeserializeObject(json, _settings);
return result ?? defaultValue;
}
catch
{
return defaultValue;
}
}
}
}