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

ASP.Net Core 3.1控制器如何配置支持JSON类型的请求响应属性

实现方法

有两种成熟的原生支持方案,不需要手动做序列化/反序列化处理,可同时适配请求绑定和响应输出:


方案1:使用System.Text.Json 原生JsonElement类型(适用于默认采用System.Text.Json序列化的项目)

.NET Core 3.1 自带的System.Text.Json库提供了JsonElement类型,可接收任意结构的JSON数据(对象、数组、基础值类型都支持),无需提前定义对应结构。

代码示例

using System.Text.Json;

public class MyRequest
{
    public string Name { get; set;}
    public JsonElement JSONData { get; set; }
}

常用操作示例

读取内部属性:

// 读取JSONData内的roles数组
List<string> roles = JSONData.GetProperty("roles")
    .EnumerateArray()
    .Select(item => item.GetString())
    .ToList();

响应时直接赋值该属性即可,序列化会自动输出为标准JSON结构。


方案2:使用Newtonsoft.Json的JToken类型(适用于已接入Newtonsoft.Json序列化的项目)

如果你的项目已经配置使用Newtonsoft.Json作为序列化组件,可直接用JToken类型接收任意JSON结构。

前置配置

确保已安装NuGet包Microsoft.AspNetCore.Mvc.NewtonsoftJson,并在Startup.cs中开启配置:

services.AddControllers()
    .AddNewtonsoftJson();

代码示例

using Newtonsoft.Json.Linq;

public class MyRequest
{
    public string Name { get; set;}
    public JToken JSONData { get; set; }
}

常用操作示例

读取内部属性:

// 读取JSONData内的roles数组
List<string> roles = JSONData["roles"].ToObject<List<string>>();

响应时直接赋值该属性即可自动序列化为标准JSON结构。


补充说明:如果JSONData字段可能为空,直接将类型声明为可空类型(JsonElement?/JToken?)即可,框架会自动处理空值绑定和序列化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:42:01