ReferenceHandler.Preserve Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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ší
$idvlastnost pro každý objekt a pro každý výčtový typ pole JSON bude vnořen do objektu JSON obsahujícího objekt$ida$valuesvlastnost. - 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 psaní složitých referenčních typů serializátor také zapisuje 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ů
$idhodnot se vlastnost metadat ignoruje. Vyvolá JsonException se, pokud$refse v objektu JSON najde vlastnost metadat. - U výčtových typů
$valueshodnot 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,$idvlastnost metadat musí být první vlastností v objektu JSON. - Objekt JSON, který obsahuje
$refvlastnost metadat, nesmí obsahovat žádné jiné vlastnosti. - Hodnota vlastnosti metadat musí odkazovat na
$idvlastnost$ref, která se objevila dříve ve formátu JSON. - Hodnota
$idvlastností metadat musí$refbý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
$idvlastnost a$valuesmetadata v tomto pořadí. (Pořadí ale není důležité, pokud AllowOutOfOrderMetadataProperties je nastavená hodnotatrue.) - U výčtových typů
$valuesmusí být vlastnost metadat polem JSON. - Vlastnost
$valuesmetadat je platná pouze při odkazech na výčtové typy.
- Pokud AllowOutOfOrderMetadataProperties není nastavená hodnota
Pokud JSON není správně vytvořený, vyvolá JsonException se chyba.