ReferenceHandler.Preserve Vlastnost

Definice

Získá objekt, který označuje, zda metadata vlastnosti jsou ctěny, když JSON objekty a pole jsou deserializovány do odkazových typů a zapsány při serializaci typů odkazů. To je nezbytné k vytvoření souboru JSON s možností odezvy z objektů, které obsahují cykly nebo duplicitní odkazy.

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

Hodnota vlastnosti

Poznámky

  • Při serializaci:

    • Při psaní složitých referenčních typů serializátor také zapisuje vlastnosti metadat ($id, $valuesa $ref) do nich.
    • Výstupní JSON bude obsahovat další $id vlastnost pro každý objekt a pro každý výčtový typ pole JSON bude vnořen do objektu JSON obsahujícího objekt $id a $values vlastnost.
    • ReferenceEquals(Object, Object) slouží k určení, zda jsou objekty identické.
    • Pokud je objekt identický s dříve serializovaným objektem, zapíše se místo toho ukazatel ($ref) na identifikátor ($id) takového objektu.
    • Pro typy hodnot nejsou zapsány žádné vlastnosti metadat.
  • Při deserializaci:

    • Vlastnosti metadat v souboru JSON, které se používají k zachování duplicitních odkazů a cyklů, budou dodrženy, pokud jsou správně vytvořené.*
    • U objektů JSON, které neobsahují žádné vlastnosti metadat, je chování deserializace identické s tím, že nepoužíváte Preserve.
    • U typů $id hodnot se vlastnost metadat ignoruje. Vyvolá JsonException se, pokud $ref se v objektu JSON najde vlastnost metadat.
    • U výčtových typů $values hodnot je vlastnost metadat ignorována.
  • Aby se vlastnosti metadat ve formátu JSON považovaly za dobře vytvořené, musí se řídit těmito pravidly:

    • Pokud AllowOutOfOrderMetadataProperties není nastavená hodnota true, $id vlastnost metadat musí být první vlastností v objektu JSON.
    • Objekt JSON, který obsahuje $ref vlastnost metadat, nesmí obsahovat žádné jiné vlastnosti.
    • Hodnota vlastnosti metadat musí odkazovat na $id vlastnost$ref, která se objevila dříve ve formátu JSON.
    • Hodnota $id vlastností metadat musí $ref být řetězec JSON.
    • Pro výčtové typy, jako List<T>je například , musí být pole JSON vnořeno do objektu JSON obsahujícího $id vlastnost a $values metadata v tomto pořadí. (Pořadí ale není důležité, pokud AllowOutOfOrderMetadataProperties je nastavená hodnota true.)
    • U výčtových typů $values musí být vlastnost metadat polem JSON.
    • Vlastnost $values metadat je platná pouze při odkazech na výčtové typy.

Pokud JSON není správně vytvořený, vyvolá JsonException se chyba.

Platí pro