Bagikan melalui


Serialisasi dan deserialisasi JSON di .NET - gambaran umum

Namespace System.Text.Json menyediakan fungsionalitas untuk serialisasi dan deserialisasi dari JavaScript Object Notation (JSON), atau dikenal juga sebagai marshalling dan unmarshalling. Serialisasi adalah proses mengonversi status objek, yaitu, nilai propertinya, menjadi bentuk yang dapat disimpan atau ditransmisikan. Formulir berseri tidak menyertakan informasi apa pun tentang metode terkait objek. Deserialisasi merekonstruksi objek dari formulir yang diserialisasikan.

Desain System.Text.Json pustaka memprioritaskan performa tinggi dan alokasi memori rendah dibandingkan dengan set fitur yang luas. Dukungan UTF-8 bawaan mengoptimalkan proses membaca dan menulis teks JSON yang dikodekan sebagai UTF-8, yang merupakan pengodean paling umum untuk data di web dan file di disk.

Pustaka juga menyediakan kelas untuk bekerja dengan model objek dokumen (DOM) di dalam memori. Fitur ini memungkinkan akses acak ke elemen dalam file atau string JSON.

Untuk Visual Basic, ada beberapa batasan pada bagian pustaka apa yang dapat Anda gunakan. Untuk informasi selengkapnya, lihat dukungan (Visual Basic).

Cara mendapatkan perpustakaan

Pustaka terintegrasi sebagai bagian dari kerangka bersama untuk .NET Core 3.0 dan versi yang lebih baru. Fitur pembuatan sumber adalah bawaan sebagai bagian dari kerangka kerja bersama untuk .NET 6 dan versi yang lebih baru.

Untuk versi kerangka kerja yang lebih lama dari .NET Core 3.0, instal paket NuGet System.Text.Json. Paket ini mendukung:

  • .NET Standard 2.0 dan yang lebih baru
  • .NET Framework 4.6.2 dan yang lebih baru
  • .NET 8 dan yang lebih baru

Namespace dan API

Penting

System.Text.Json tidak mendukung API serialisasi berikut yang mungkin telah Anda gunakan sebelumnya:

Refleksi vs. pembuatan sumber

Secara default, System.Text.Json mengumpulkan metadata yang diperlukan untuk mengakses properti objek untuk serialisasi dan deserialisasi pada saat menjalankan menggunakan refleksi. Sebagai alternatif, System.Text.Json dapat menggunakan fitur pembuatan sumber C# untuk meningkatkan performa, mengurangi penggunaan memori privat, dan memfasilitasi pemangkasan rakitan, yang mengurangi ukuran aplikasi.

Untuk informasi selengkapnya, lihat Refleksi versus generasi sumber.

Informasi keamanan

Untuk informasi tentang ancaman keamanan yang dipertimbangkan saat merancang JsonSerializer, dan bagaimana ancaman tersebut dapat dimitigasi, lihat System.Text.Json Model Ancaman.

Keamanan utas

Serializer System.Text.Json dirancang dengan mengingat keamanan utas. Praktis, ini berarti bahwa setelah dikunci, JsonSerializerOptions instans dapat dibagikan dengan aman di beberapa utas. JsonDocument menyediakan representasi DOM yang tidak dapat diubah, dan dalam .NET 8 dan versi yang lebih baru, aman utas, representasi DOM untuk nilai JSON.

Sumber Daya Tambahan: