using System.Collections.Generic; using System.Data; using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Unicode; using Znyc.Cloudcar.Admin.Commons.Helpers; namespace Znyc.Cloudcar.Admin.Commons.Json { /// /// JSON序列化、反序列化扩展类。 /// public static class JsonHelper { /// /// 对象序列化成JSON字符串。 /// /// 序列化对象 /// public static string ToJson(this object obj) { JsonSerializerOptions options = new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All), WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, AllowTrailingCommas = true }; //设置时间格式 options.Converters.Add(new DateTimeJsonConverter()); options.Converters.Add(new DateTimeNullableConverter()); //设置bool获取格式 options.Converters.Add(new BooleanJsonConverter()); //设置数字 options.Converters.Add(new IntJsonConverter()); options.PropertyNamingPolicy = new UpperFirstCaseNamingPolicy(); options.PropertyNameCaseInsensitive = true; //忽略大小写 //JsonSerializerOptions options = new JsonSerializerOptions() //{ // WriteIndented = true, //格式化json字符串 // AllowTrailingCommas = true, //可以结尾有逗号 // //IgnoreNullValues = true, //可以有空值,转换json去除空值属性 // IgnoreReadOnlyProperties = true, //忽略只读属性 // PropertyNameCaseInsensitive = true, //忽略大小写 // Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) //}; return JsonSerializer.Serialize(obj, options); } /// /// JSON字符串序列化成对象。 /// /// 对象类型 /// JSON字符串 /// public static T ToObject(this string json) { //JsonSerializerOptions options = new JsonSerializerOptions() //{ // WriteIndented = true, //格式化json字符串 // AllowTrailingCommas = true, //可以结尾有逗号 // //IgnoreNullValues = true, //可以有空值,转换json去除空值属性 // IgnoreReadOnlyProperties = true, //忽略只读属性 // PropertyNameCaseInsensitive = true, //忽略大小写 // //PropertyNamingPolicy = JsonNamingPolicy.CamelCase //命名方式是默认还是CamelCase // Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) //}; JsonSerializerOptions options = new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All), WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, AllowTrailingCommas = true }; //设置时间格式 options.Converters.Add(new DateTimeJsonConverter()); options.Converters.Add(new DateTimeNullableConverter()); //设置bool获取格式 options.Converters.Add(new BooleanJsonConverter()); //设置数字 options.Converters.Add(new IntJsonConverter()); //options.PropertyNamingPolicy = new UpperFirstCaseNamingPolicy(); options.PropertyNameCaseInsensitive = true; //忽略大小写 return json == null ? default : JsonSerializer.Deserialize(json, options); } /// /// JSON字符串序列化成集合。 /// /// 集合类型 /// JSON字符串 /// public static List ToList(this string json) { //JsonSerializerOptions options = new JsonSerializerOptions() //{ // WriteIndented = true, //格式化json字符串 // AllowTrailingCommas = true, //可以结尾有逗号 // //IgnoreNullValues = true, //可以有空值,转换json去除空值属性 // IgnoreReadOnlyProperties = true, //忽略只读属性 // PropertyNameCaseInsensitive = true, //忽略大小写 // //PropertyNamingPolicy = JsonNamingPolicy.CamelCase //命名方式是默认还是CamelCase // Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) //}; JsonSerializerOptions options = new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All), WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, AllowTrailingCommas = true }; //设置时间格式 options.Converters.Add(new DateTimeJsonConverter()); options.Converters.Add(new DateTimeNullableConverter()); //设置bool获取格式 options.Converters.Add(new BooleanJsonConverter()); //设置数字 options.Converters.Add(new IntJsonConverter()); //options.PropertyNamingPolicy = new UpperFirstCaseNamingPolicy(); options.PropertyNameCaseInsensitive = true; //忽略大小写 return json == null ? null : JsonSerializer.Deserialize>(json, options); } /// /// JSON字符串序列化成DataTable。 /// /// JSON字符串 /// public static DataTable ToTable(this string json) { return json == null ? null : JsonSerializer.Deserialize(json); } } }