Admin Core

JSON 反序列化帮助类

FlexibleEnumConverter 允许枚举字段同时使用字符串或数字格式:

反序列化

1
2
3
4
5
6
7
8
using ZhonTai.Common.Helpers;

// 反序列化为强类型
var json = "{\"name\":\"张三\",\"age\":25}";
var user = JsonHelper.Deserialize<UserDto>(json);

// 反序列化为动态类型
var obj = JsonHelper.Deserialize(json, typeof(UserDto));

使用自定义选项

1
2
3
4
5
6
7
8
9
10
using ZhonTai.Common.Helpers;
using System.Text.Json;

// 使用自定义选项序列化
var options = new JsonSerializerOptions
{
WriteIndented = false,
PropertyNamingPolicy = null
};
var json = JsonHelper.Serialize(user, options);

配置全局选项

1
2
3
4
5
6
7
using ZhonTai.Common.Helpers;

// 修改全局默认配置(线程安全)
JsonHelper.ConfigureOptions(options =>
{
options.WriteIndented = false;
});

获取当前配置副本

1
2
3
4
5
6
using ZhonTai.Common.Helpers;

// 获取当前全局配置的副本,避免影响全局
var options = JsonHelper.GetCurrentOptions();
options.WriteIndented = false;
var json = JsonHelper.Serialize(user, options);

FlexibleEnumConverter 枚举兼容

FlexibleEnumConverter 允许枚举字段同时使用字符串或数字格式:

1
2
3
4
5
6
// 以下两种 JSON 格式均可正确反序列化
var json1 = "{\"status\":\"Enabled\"}"; // 字符串格式
var json2 = "{\"status\":1}"; // 数字格式

var result1 = JsonHelper.Deserialize<MyDto>(json1);
var result2 = JsonHelper.Deserialize<MyDto>(json2);

#中台 #中台/.NET模板 #中台/特性注解 #中台/配置文件