ReferenceHandler.Preserve Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan objek yang menunjukkan apakah properti metadata dihormati ketika objek dan array JSON dideserialisasi ke dalam jenis referensi, dan ditulis saat jenis referensi diserialisasikan. Ini diperlukan untuk membuat JSON round-trippable dari objek yang berisi siklus atau referensi duplikat.
public:
static property System::Text::Json::Serialization::ReferenceHandler ^ Preserve { System::Text::Json::Serialization::ReferenceHandler ^ get(); };
public static System.Text.Json.Serialization.ReferenceHandler Preserve { get; }
static member Preserve : System.Text.Json.Serialization.ReferenceHandler
Public Shared ReadOnly Property Preserve As ReferenceHandler
Nilai Properti
Keterangan
Pada Serialisasi:
- Saat menulis jenis referensi yang kompleks, serializer juga menulis properti metadata (
$id,$values, dan$ref) di dalamnya. - JSON output akan berisi properti tambahan
$iduntuk setiap objek, dan untuk setiap jenis enumerable yang dipancarkan array JSON akan ditumpuk dalam objek JSON yang$idberisi properti dan$values. - ReferenceEquals(Object, Object) digunakan untuk menentukan apakah objek identik.
- Ketika objek identik dengan objek yang diserialisasikan sebelumnya, penunjuk (
$ref) ke pengidentifikasi ($id) objek tersebut ditulis sebagai gantinya. - Tidak ada properti metadata yang ditulis untuk jenis nilai.
- Saat menulis jenis referensi yang kompleks, serializer juga menulis properti metadata (
Saat Deserialisasi:
- Properti metadata dalam JSON yang digunakan untuk mempertahankan referensi dan siklus duplikat akan dihormati selama dibentuk dengan baik.*
- Untuk objek JSON yang tidak berisi properti metadata apa pun, perilaku deserialisasi identik dengan tidak menggunakan
Preserve. - Untuk jenis nilai,
$idproperti metadata diabaikan. JsonException dilemparkan jika$refproperti metadata ditemukan dalam objek JSON. - Untuk jenis nilai yang dapat dijumlahkan,
$valuesproperti metadata diabaikan.
Agar properti metadata dalam JSON dianggap terbentuk dengan baik, mereka harus mengikuti aturan ini:
- Kecuali AllowOutOfOrderMetadataProperties diatur ke
true,$idproperti metadata harus menjadi properti pertama dalam objek JSON. - Objek JSON yang berisi
$refproperti metadata tidak boleh berisi properti lain. - Nilai
$refproperti metadata harus merujuk ke yang$idtelah muncul sebelumnya di JSON. - Nilai
$idproperti metadata dan$refharus berupa string JSON. - Untuk jenis yang dapat dijumlahkan, seperti List<T>, array JSON harus disarangkan dalam objek JSON yang
$idberisi properti metadata dan$values, dalam urutan tersebut. (Namun, pesanan tidak penting jika AllowOutOfOrderMetadataProperties diatur ketrue.) - Untuk jenis yang dapat dijumlahkan,
$valuesproperti metadata harus berupa array JSON. - Properti
$valuesmetadata hanya valid jika merujuk ke jenis yang dapat dihitung.
- Kecuali AllowOutOfOrderMetadataProperties diatur ke
Jika JSON tidak terbentuk dengan baik, akan JsonException dilemparkan.