using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CommonLib.SerializerUtils
{
/// <summary>
/// JSON序列化帮助类
/// </summary>
public sealed class JsonHelper
{
/// <summary>
/// 全家桶转换参数
/// </summary>
public static JsonSerializerSettings DefaultSettings => new JsonSerializerSettings
{
Formatting = Formatting.Indented,
NullValueHandling = NullValueHandling.Include,
MissingMemberHandling = MissingMemberHandling.Ignore,
TypeNameHandling = TypeNameHandling.All,
};
/// <summary>
/// 格式化转换参数
/// </summary>
public static JsonSerializerSettings FormatSettings => new JsonSerializerSettings { Formatting = Formatting.Indented };
/// <summary>
/// 序列化
/// </summary>
/// <typeparam name="T">序列化的对象的类型</typeparam>
/// <param name="obj">序列化的对象</param>
/// <param name="settings">序列化参数,默认为空。</param>
/// <returns></returns>
public static string Serialize<T>(T obj, JsonSerializerSettings settings = null) where T : class
{
if (settings == null)
{
return JsonConvert.SerializeObject(obj);
}
else
{
return JsonConvert.SerializeObject(obj, settings);
}
}
/// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T">返回对象类型</typeparam>
/// <param name="jsonStr">json字符串</param>
/// <param name="settings">反序列化参数,默认为空。</param>
/// <returns></returns>
public static T Deserialize<T>(string jsonStr, JsonSerializerSettings settings = null) where T : class
{
if (settings == null)
{
return JsonConvert.DeserializeObject<T>(jsonStr);
}
else
{
return JsonConvert.DeserializeObject<T>(jsonStr, settings);
}
}
/// <summary>
/// 复制对象
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="obj">要复制的对象</param>
/// <returns></returns>
public static T ObjCopy<T>(T obj) where T : class
{
return JsonConvert.DeserializeObject<T>(JsonConvert.SerializeObject(obj));
}
}
}
C# JSON序列化
最新推荐文章于 2025-05-25 21:50:24 发布