不是问怎么配置序列化输出, 问的是新建的 ASP.NET Core API(.NET Core 3.0)项目会默认输出json格式数据, 这个默认配置在源码哪里? 没找到对应的内容...
Host.CreateDefaultBuilder()
的源码在这里, 但是没看到对应的序列化默认配置?
你想默认序列化成什么格式?
不是想序列化成什么样子...我想知道默认输出json格式这个配置在源码哪个位置...没找到
@taadis: 试试
services.AddMvc(options =>
{
options.RespectBrowserAcceptHeader = true; // false by default
options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
});
参考
@dudu: 嘟嘟哥 我问的是源码里默认输出json相关的代码或者说默认配置在哪里...不是如何自定义序列化输出...
@taadis:
@dudu: 嗯 我已经找到了...顺便有新发现 多谢了
回娘家之路...
services.AddControllers();
// 内部会调用一个私有方法 AddControllersCore()
// https://github.com/aspnet/AspNetCore/blob/v3.0.0/src/Mvc/Mvc/src/MvcServiceCollectionExtensions.cs#L94
// 而 AddControllersCore 内部调用了 AddFormatterMappings()
// https://github.com/aspnet/AspNetCore/blob/v3.0.0/src/Mvc/Mvc/src/MvcServiceCollectionExtensions.cs#L150
// 内部添加了单例服务 FormatFilter
// https://github.com/aspnet/AspNetCore/blob/v3.0.0/src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreMvcCoreBuilderExtensions.cs#L105
// 发现了 Syetem.Text.Json 输出转义和中文正常的配置 2333
// https://github.com/aspnet/AspNetCore/blob/v3.0.0/src/Mvc/Mvc.Core/src/Formatters/SystemTextJsonOutputFormatter.cs
// 另符默认支持的几种类型在这里
// https://github.com/aspnet/AspNetCore/blob/v3.0.0/src/Mvc/Mvc.Core/src/Formatters/MediaTypeHeaderValues.cs