pengaturan serializer json untuk aplikasi inti warisan asp.net ditetapkan dengan menambahkan AddMvc().AddJsonOptions()
, tapi saya tidak menggunakan AddMvc()
di asp.net core 3
. Jadi bagaimana saya bisa mengatur pengaturan serialisasi global json?
c#
json
asp.net-core
.net-core
asp.net-core-3.0
Alex Zaitsev
sumber
sumber
AddMvc
, apa yang Anda gunakan? Apakah Anda menggunakan egAddControllers
atau Anda tidak menggunakan MVC sama sekali?app.UseEndpoints(endpoints => { endpoints.MapControllers() })
danservices.AddControllers();
AddControllers
diConfigureServices
, kan?Jawaban:
AddMvc
mengembalikanIMvcBuilder
implementasi, yang memilikiAddJsonOptions
metode ekstensi yang sesuai . Metode gaya baruAddControllers
,AddControllersWithViews
danAddRazorPages
juga mengembalikanIMvcBuilder
implementasi. Rantai dengan ini dengan cara yang sama Anda akan rantai denganAddMvc
:Perhatikan bahwa di
options
sini bukan lagi untuk Json.NET, tetapi untukSystem.Text.Json
API yang lebih baru . Jika Anda masih ingin menggunakan Json.NET, lihat jawaban tymtamsumber
Opsi A. AddControllers
Ini masih MVC, dan membutuhkan paket nuget Microsoft.AspNetCore.Mvc.NewtonsoftJson, tetapi Anda mengatakan Anda menggunakannya
AddControllers
.Dari Tambahkan dukungan format JSON berbasis Newtonsoft.Json
Opsi B. Pengaturan Default
JsonConvert.DefaultSettings = () => new JsonSerializerSettings (...)
Properti JsonConvert.DefaultSettings
sumber
System.Text.Json
tidak menangani polimorfisme atau enum dengan benar. Cara mudah yang menyenangkan untuk mengubah serializer default.Menambahkan Newtonsoft tidak perlu, cukup masalah dengan menambahkan paket kompatibilitas Newtonsoft pada proyek .Net Core 3.0.
Lihat juga https://github.com/aspnet/AspNetCore/issues/13564
Tentu saja, orang akan merayakan penamaan properti
PascalCase
, NA saat ini ... Jadinull
untukPropertyNamingPolicy
PascalCase berarti, yang jelas tidak terlalu baik.sumber