Freigeben über


ReferenceHandler.Preserve Eigenschaft

Definition

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, $valuesund $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 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 Preservevon .
    • 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.

Wenn der JSON-Code nicht wohlgeformt ist, wird ein JsonException ausgelöst.

Gilt für: