ZetCode

ASP.NET JsonResult

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 JsonResult 类。JsonResult 用于在 Web 应用程序的控制器操作中返回 JSON 格式的数据。

ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。JsonResult 简化了从 API 端点返回 JSON 响应的操作。

基本定义

JsonResult 是 ASP.NET 中的一种 ActionResult 类型,它将对象序列化为 JSON 格式。它继承自 ActionResult,主要用于 Web API 项目。

当控制器操作返回 JsonResult 时,ASP.NET 会自动将提供的数据序列化为 JSON 格式。响应包含适用于 JSON 数据的正确 content-type 标头。

JsonResult 通过 JsonSerializerSettings 支持各种序列化选项。这包括对 null 值、日期格式和引用处理的支持。

ASP.NET JsonResult 示例

以下示例演示了一个使用 JsonResult 的 Web API 控制器。

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

var app = builder.Build();

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

这设置了一个基本的 ASP.NET 应用程序,并支持控制器。MapControllers 方法为控制器启用属性路由。

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

[ApiController]
[Route("api/[controller]")]
public class WeatherController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild",
        "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    [HttpGet("forecast")]
    public JsonResult GetWeatherForecast()
    {
        var forecast = Enumerable.Range(1, 5).Select(index => new
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        });

        return new JsonResult(forecast);
    }

    [HttpGet("forecast/custom")]
    public JsonResult GetCustomWeatherForecast()
    {
        var forecast = Enumerable.Range(1, 5).Select(index => new
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        });

        var options = new JsonSerializerOptions
        {
            PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
            WriteIndented = true
        };

        return new JsonResult(forecast, options);
    }
}

此控制器演示了两种使用 JsonResult 的不同方法。第一种方法返回一个具有默认序列化设置的简单 JSON 响应。

第二种方法展示了如何使用 JsonSerializerOptions 自定义 JSON 序列化。在这里,我们设置了 camelCase 命名和美化打印。

ApiController 属性为无效模型启用自动 HTTP 400 响应。Route 为所有操作设置了基本路径。

该示例生成随机的天气预报数据。JsonResult 会自动将匿名对象序列化为 JSON 格式,并带有正确的内容标头。

来源

Microsoft ASP.NET Web API 格式文档

在本文中,我们探讨了 ASP.NET 8 中的 JsonResult 类。这一强大功能简化了从 API 端点返回 JSON 响应的操作。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。到目前为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 ASP.NET 教程