Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
System.Text.Json Pustaka default untuk menekankan perilaku harfiah dan deterministik dan menghindari tebakan atau interpretasi atas nama pemanggil. Pustaka sengaja dirancang dengan cara ini untuk keamanan dan performa. Meskipun System.Text.Json sangat dapat dikonfigurasi dan fiturnya dapat digunakan untuk meminimalkan perubahan yang diperlukan pada tipe serial, penting untuk mempertimbangkan trade-off antara menangani tipe yang ada dengan perubahan sesedikit mungkin dengan merombak kembali tipe untuk mendukung serialisasi yang idiomatik dan aman.
Saat bermigrasi dari BinaryFormatter ke System.Text.Json, sangat penting untuk mencatat perilaku dan opsi berikut:
Secara default, bidang tidak diserialisasikan atau dideserialisasi dengan
System.Text.Json, tetapi dapat dianotasi untuk serialisasi. Atau,JsonSerializerOptions.IncludeFieldsdapat dengan hati-hati diatur ke untuktruemenyertakan semua bidang publik untuk jenis yang diserialisasikan.JsonSerializerOptions options = new() { IncludeFields = true };Secara default, System.Text.Jsonmengabaikan bidang dan properti privat. Anda dapat mengaktifkan penggunaan aksesor non-publik pada properti dengan menggunakan
[JsonInclude]atribut . Termasuk bidang privat memerlukan beberapa pekerjaan ekstra yang tidak sepele.System.Text.Json tidak dapat mendeserialisasi bidang atau properti baca-saja, tetapi
[JsonConstructor]atribut dapat digunakan untuk menunjukkan bahwa konstruktor yang ditentukan harus digunakan untuk membuat instans jenis pada deserialisasi. Konstruktor dapat mengatur bidang dan properti baca-saja.Untuk memodifikasi perilaku serialisasi default untuk jenis tertentu, Anda dapat menulis pengonversi kustom.
Ini mendukung serialisasi dan deserialisasi banyak koleksi, tetapi ada batasan. Lihat dokumentasi tentang jenis yang didukung
untuk detail tentang jenis dan koleksi yang didukung dalam serialisasi dan deserialisasi. Di bawah kondisi tertentu, ini mendukung serialisasi dan deserialisasi koleksi generik kustom.
Jenis lain tanpa dukungan bawaan adalah:
DataSet, ,DataTable,DBNullTimeZoneInfo, ,Type.ValueTupleNamun, Anda dapat menulis pengonversi kustom untuk mendukung jenis ini.Ini mendukung serialisasi dan deserialisasi hierarki tipe polimorfik di mana tipe tersebut telah secara eksplisit dipilih melalui atribut
[JsonDerivedType]atau pengonversi kustom. Hierarki pewarisan terbuka tidak didukung, dan round-tripping dengan polimorfisme memerlukan pengidentifikasi diskriminator jenis untuk semua jenis turunan yang diketahui.Atribut
[JsonIgnore]pada properti menyebabkan properti dihilangkan dari JSON selama serialisasi.Untuk mempertahankan referensi dan menangani referensi melingkar pada
System.Text.Json, aturJsonSerializerOptions.ReferenceHandlerkeReferenceHandler.Preserve.Serialization dapat disesuaikan secara luas dengan kontrak kustom, membuka blokir banyak skenario sambil meminimalkan perubahan pada jenis serial.