ZetCode

ASP.NET AddJsonOptions

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 AddJsonOptions 方法。此方法对于配置 ASP.NET 应用程序中的 JSON 序列化设置至关重要。

ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。AddJsonOptions 提供了对 JSON 数据格式化方式的控制。

基本定义

AddJsonOptions 是 ASP.NET Core 中用于配置 JSON 序列化选项的扩展方法。它是 Microsoft.AspNetCore.Mvc 命名空间的一部分。

此方法允许开发人员自定义对象如何序列化为 JSON。选项包括属性命名、格式化和 null 值的处理。

常见用例包括设置 camelCase 属性名称、忽略 null 值以及配置日期/时间格式。它通常在 Program.cs 中调用。

ASP.NET AddJsonOptions 示例

以下示例演示了如何配置 JSON 序列化选项。

Program.cs
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
        options.JsonSerializerOptions.WriteIndented = true;
        options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
        options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
    });

var app = builder.Build();

app.MapControllers();
app.Run();

此配置应用了多个 JSON 序列化设置。PropertyNamingPolicy 将属性名称转换为 camelCase。

WriteIndented 使 JSON 输出更易于通过缩进阅读。DefaultIgnoreCondition 在序列化期间跳过 null 值。

JsonStringEnumConverter 将枚举值转换为它们的字符串表示形式,而不是数字。这提高了 API 的清晰度。

Controllers/WeatherController.cs
using Microsoft.AspNetCore.Mvc;
using System.Text.Json.Serialization;

[ApiController]
[Route("api/[controller]")]
public class WeatherController : ControllerBase
{
    [HttpGet]
    public IActionResult GetWeather()
    {
        var weather = new WeatherForecast
        {
            Date = DateTime.Now,
            TemperatureC = 25,
            Summary = "Warm",
            AdditionalInfo = null,
            WeatherType = WeatherType.Sunny
        };
        
        return Ok(weather);
    }
}

public class WeatherForecast
{
    public DateTime Date { get; set; }
    public int TemperatureC { get; set; }
    public string? Summary { get; set; }
    public string? AdditionalInfo { get; set; }
    public WeatherType WeatherType { get; set; }
}

public enum WeatherType
{
    Sunny,
    Cloudy,
    Rainy
}

此控制器返回一个天气预报对象。JSON 响应将反映我们在 Program.cs 中的序列化设置。

输出将具有 camelCase 属性名称、缩进格式,并且 AdditionalInfo 的 null 值将被省略。枚举将序列化为字符串。

该示例展示了 AddJsonOptions 如何提供对 JSON 序列化行为的集中控制。这确保了所有端点之间响应的一致性。

来源

Microsoft ASP.NET JSON 格式化文档

在本文中,我们探讨了 ASP.NET 8 中的 AddJsonOptions 方法。此强大功能提供了对 JSON 序列化的精细控制。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出所有 ASP.NET 教程