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 控制器。
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run();
这设置了一个基本的 ASP.NET 应用程序,并支持控制器。MapControllers 方法为控制器启用属性路由。
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 响应的操作。