在使用dotnet 8 过程中,使用了JObject类型作为api的返回,但是返回的空数组
api:
[HttpGet("voices")] public async Task<IActionResult> GetObject() { JObject obj = new JObject(); obj["test"] = "test"; return new JsonResult(obj) { StatusCode = 200,ContentType= "application/json" }; }
期待返回:
{
"test": "test"
}
真实返回:
{
"test": []
}
查询资料得知:
.Net 8 默认为system.text.json支持
导致返回的数据格式都是基于system.text.json格式化返回。
了解到有两种解决方法:
1.移除JObject改用System.Text.Json.Nodes.JsonObject
2.改用Microsoft.AspNetCore.Mvc.NewtonsoftJson
以下是第二种方法:
需要启用Newtonsoft.Json。
引用类库:Microsoft.AspNetCore.Mvc.NewtonsoftJson
(记得要用Mircrisoft开头的库,之前的不支持net8 AddNewtonsoftJson)
在启动文件添加NuGet 包并在 Program.cs
中进行配置
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers()
.AddNewtonsoftJson();
在上述代码中,对 AddNewtonsoftJson
的调用会将以下 Web API、MVC 和 Razor Pages 功能配置为使用 Newtonsoft.Json;
需要对日期格式进行设置:
builder.Services.AddControllers().AddNewtonsoftJson(option =>
{
option.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
});
标签:返回,JObject,Json,api,为空,test,AddNewtonsoftJson From: https://www.cnblogs.com/lixipeng/p/18251891