Mic*_*ves 12 c# json asp.net-core-3.0
在asp.net core 2.2中,我曾经有以下内容,
var jsonSettings = new JsonSerializerSettings
{
ContractResolver = new SubstituteNullWithEmptyStringContractResolver()
};
services.AddMvc(options =>
{
options.OutputFormatters.RemoveType<JsonOutputFormatter>();
options.OutputFormatters.Add(new ResponseJsonOutputFormatter(jsonSettings,ArrayPool<char>.Shared));
}
public class ResponseJsonOutputFormatter : JsonOutputFormatter
{
// Stuff in here
}
Run Code Online (Sandbox Code Playgroud)
但是在 3.0 中使用:
services.AddControllersWithViews(options =>
Run Code Online (Sandbox Code Playgroud)
并且类型JsonOutputFormatter不再可用。
当前建议的全局自定义 json 响应的方法是什么?
我尝试使用IOutputFormatter但是当我将它设置AddControllersWithViews为 OutputFormatters时它似乎没有连接,所以不确定是否有额外的步骤?
具有新端点路由的中间件是一种选择吗?或者有没有更好的方法来实现这一目标?
Gid*_*aya 11
我个人使用 Json.NET
services.AddMvc().AddNewtonsoftJson();
Run Code Online (Sandbox Code Playgroud)
可以在调用中设置 Json.NET 设置AddNewtonsoftJson:
services.AddMvc()
.AddNewtonsoftJson(options =>
options.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver());
Run Code Online (Sandbox Code Playgroud)
我在兼容模式下使用默认选项
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
.AddNewtonsoftJson(options => { options.SerializerSettings.ContractResolver =
new DefaultContractResolver(); });
Run Code Online (Sandbox Code Playgroud)