ReferenceHandler.Preserve Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft ein -Objekt ab, das angibt, ob Metadateneigenschaften berücksichtigt werden, wenn JSON-Objekte und Arrays in Verweistypen deserialisiert und geschrieben werden, wenn Verweistypen serialisiert werden. Dies ist notwendig, um aus Objekten mit Zyklen oder duplizierten Verweisen Roundtrip-fähigen JSON-Code zu erstellen.
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
Eigenschaftswert
Hinweise
Beim Serialisieren:
- Beim Schreiben komplexer Verweistypen schreibt das Serialisierungsprogramm auch Metadateneigenschaften (
$id
,$values
und$ref
) in diese. - Der JSON-Ausgabecode enthält eine zusätzliche
$id
Eigenschaft für jedes Objekt, und für jeden aufzählbaren Typ wird das ausgegebene JSON-Array in einem JSON-Objekt geschachtelt, das eine$id
- und$values
-Eigenschaft enthält. - ReferenceEquals(Object, Object) wird verwendet, um zu bestimmen, ob Objekte identisch sind.
- Wenn ein Objekt mit einem zuvor serialisierten identisch ist, wird stattdessen ein Zeiger (
$ref
) auf den Bezeichner ($id
) dieses Objekts geschrieben. - Für Werttypen werden keine Metadateneigenschaften geschrieben.
- Beim Schreiben komplexer Verweistypen schreibt das Serialisierungsprogramm auch Metadateneigenschaften (
Beim Deserialisieren:
- Die Metadateneigenschaften im JSON-Code, die zum Beibehalten doppelter Verweise und Zyklen verwendet werden, werden berücksichtigt, solange sie wohlgeformt sind.*
- Für JSON-Objekte, die keine Metadateneigenschaften enthalten, ist das Deserialisierungsverhalten identisch mit der Nicht-Verwendung
Preserve
von . - Bei Werttypen wird die
$id
Metadateneigenschaft ignoriert. Ein JsonException wird ausgelöst, wenn eine$ref
Metadateneigenschaft innerhalb des JSON-Objekts gefunden wird. - Bei aufzählbaren Werttypen wird die
$values
Metadateneigenschaft ignoriert.
Damit die Metadateneigenschaften im JSON-Code als wohlgeformt gelten, müssen sie die folgenden Regeln befolgen:
- Die
$id
Metadateneigenschaft muss die erste Eigenschaft im JSON-Objekt sein. - Ein JSON-Objekt, das eine
$ref
Metadateneigenschaft enthält, darf keine anderen Eigenschaften enthalten. - Der Wert der
$ref
Metadateneigenschaft muss auf einen$id
verweisen, der zuvor im JSON-Code angezeigt wurde. - Der Wert der
$id
Metadateneigenschaften und$ref
muss eine JSON-Zeichenfolge sein. - Für aufzählbare Typen wie List<T>muss das JSON-Array in einem JSON-Objekt geschachtelt werden, das eine
$id
Metadateneigenschaft und$values
in dieser Reihenfolge enthält. - Bei aufzählbaren Typen muss die
$values
Metadateneigenschaft ein JSON-Array sein. - Die
$values
Metadateneigenschaft ist nur gültig, wenn auf enumerierbare Typen verwiesen wird.
- Die
Wenn der JSON-Code nicht wohlgeformt ist, wird ein JsonException ausgelöst.