You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中是否存在支持任意类序列化的反序列化工具?

问题背景

在ASP.NET Core框架中,可通过配置控制器服务的JSON选项,实现枚举类型与字符串格式的自动反序列化,对应配置代码如下:

builder.Services.AddControllers().AddJsonOptions(options =>
{
  options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
}

对应疑问:框架是否同时提供可支持任意类序列化操作的序列化/反序列化工具?

解答

是的,框架原生自带这套能力,无需额外引入第三方依赖。
ASP.NET Core 3.0及以上版本默认采用System.Text.Json作为内置JSON序列化组件,这套组件除了自动处理控制器接口的请求入参反序列化、响应出参序列化之外,完全可以直接在业务代码中手动调用,支持任意可序列化普通类(POCO)的JSON序列化、反序列化操作。

  • 基础手动调用代码示例:
// 自定义业务类示例
public class Product
{
    public string ProductName { get; set; }
    public decimal Price { get; set; }
    public ProductStatus Status { get; set; }
}

public enum ProductStatus
{
    OnSale,
    OffShelf
}

// 序列化:将类实例转为JSON字符串
var product = new Product { ProductName = "机械键盘", Price = 299.9m, Status = ProductStatus.OnSale };
// 可按需配置序列化规则,比如和全局配置对齐,添加枚举转字符串的转换器
var serializerOptions = new JsonSerializerOptions
{
    Converters = { new JsonStringEnumConverter() },
    WriteIndented = true
};
string jsonOutput = JsonSerializer.Serialize(product, serializerOptions);

// 反序列化:将JSON字符串转为对应类实例
Product? parsedProduct = JsonSerializer.Deserialize<Product>(jsonOutput, serializerOptions);
  • 开发提示:如果你已经在AddJsonOptions中统一配置了全局序列化规则(比如枚举转换、日期格式、属性命名策略、空值处理规则等),手动调用序列化时不需要重复编写配置,直接通过依赖注入获取IOptions<JsonOptions>实例,使用其中预配置好的SerializerOptions属性即可,能保证全局序列化行为完全一致,避免出现接口返回和手动序列化结果格式不统一的问题。

如果你使用的是ASP.NET Core 3.0以下的版本,框架默认内置的JSON序列化组件为Newtonsoft.Json,同样支持手动调用完成任意类的序列化、反序列化操作,使用逻辑和上述示例基本一致。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 20:39:30