UPDATE [2019-12-23]: Karena sebagian input komunitas vokal masalah ini telah ditambahkan ke peta jalan untuk .NET 5.0.
UPDATE [2019-10-10]: Jika tertarik melihat perilaku ini diterapkan untukSystem.Text.Json.JsonSerializer
pergilah ke masalah GitHub terbuka yang ditunjukkan oleh Chris Yungmann dan timbang.
Alih-alih ini:
JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
JsonSerializer.Deserialize<SomeObject>(someJsonString, options);
Saya ingin melakukan sesuatu seperti ini:
// This property is a pleasant fiction
JsonSerializer.DefaultSettings = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
// This uses my options
JsonSerializer.Deserialize<SomeObject>(someJsonString);
// And somewhere else in the same codebase...
// This also uses my options
JsonSerializer.Deserialize<SomeOtherObject>(someOtherJsonString);
Harapannya adalah tidak harus melalui contoh JsonSerializerOptions
untuk kasus kami yang paling umum, dan menimpa pengecualian, bukan aturan.
Seperti yang ditunjukkan dalam tanya jawab ini , ini adalah fitur yang berguna Json.Net. Aku melihat ke dalam dokumentasi untuk System.Text.Json
serta repo GitHub ini untuk NET Core. Dan yang ini .
Tampaknya tidak ada analog untuk mengelola standar serialisasi JSON di .NET Core 3. Atau apakah saya mengabaikannya?
sumber
There doesn't seem to be an analog for managing JSON serialization defaults in Core-3
- apakah Anda berbicara tentang permintaan masuk dan keluar dari API Anda? atau permintaan dan tanggapan terhadap sumber daya lain?Jawaban:
Tidak,
JsonSerializerOptions
tidak memaparkan opsi default . Jika Anda menggunakan kerangka kerja web tertentu, mungkin ada cara untuk menentukan (tidak) pengaturan serialisasi melalui itu. Kalau tidak, saya sarankan untuk membuat metode kenyamanan Anda sendiri.Lihat juga masalah terbuka ini .
sumber
Anda dapat membuat metode ekstensi. Ini sebuah contoh
Saya menggunakan metode terpisah vs harus membangun pengaturan khusus, sehingga semua pengaturan akan berada di satu tempat dan mudah digunakan kembali.
Kemudian Anda menyebutnya sebagai metode pada string, apakah literal atau variabel.
sumber
System.Text.Json.JsonSerializer
NET Core-3.0 tanpa dependensi tambahan. Terima kasih.System.Text.Json.JsonSerializer
. Konsepnya persis sama. Saya memperbarui tautan contoh.Opsi default tidak diekspos
JsonSerializer
untuk .NET Core 3.1. Namun, pada Desember 2019 ini telah ditambahkan ke peta jalan untuk 5.0.Rilis dari .NET 5.0 diharapkan November, 2020. Tetapi tidak ada jaminan masalah khusus ini akan ditangani pada waktu tertentu. Selain menunggu, jawaban ini menyarankan solusi:
sumber
Sebuah solusi telah diusulkan oleh GitHub pengguna andre-ss6 sebagai berikut:
sumber
(Jika Anda pernah beralih menggunakan Json.NET)
Saya lebih suka dan merekomendasikan untuk bersikap eksplisit dan meneruskan pengaturan ke semua panggilan, tetapi Anda dapat mengatur default dengan DefaultSettings .
lalu
sumber
System.Text.Json
mana serialisasi JSON dipanggang ke .NET Core 3.0. Terima kasih telah meluangkan waktu untuk merespons.