ReferenceHandler.Preserve Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar ett objekt som anger om metadataegenskaper respekteras när JSON-objekt och matriser deserialiseras till referenstyper och skrivs när referenstyper serialiseras. Detta är nödvändigt för att skapa rundlös JSON från objekt som innehåller cykler eller duplicerade referenser.
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
Egenskapsvärde
Kommentarer
Vid serialisering:
- När du skriver komplexa referenstyper skriver serialiseraren även metadataegenskaper (
$id,$valuesoch$ref) i dem. - JSON-utdata innehåller en extra
$idegenskap för varje objekt, och för varje uppräkningsbar typ kapslas JSON-matrisen som genereras i ett JSON-objekt som innehåller en$idoch$values-egenskap. - ReferenceEquals(Object, Object) används för att avgöra om objekt är identiska.
- När ett objekt är identiskt med ett tidigare serialiserat objekt skrivs en pekare (
$ref) till identifieraren ($id) för ett sådant objekt i stället. - Inga metadataegenskaper skrivs för värdetyper.
- När du skriver komplexa referenstyper skriver serialiseraren även metadataegenskaper (
På Deserialize:
- Metadataegenskaperna i JSON som används för att bevara duplicerade referenser och cykler kommer att respekteras så länge de är välformulerade.*
- För JSON-objekt som inte innehåller några metadataegenskaper är deserialiseringsbeteendet identiskt med att inte använda
Preserve. - För värdetyper ignoreras metadataegenskapen
$id. En JsonException genereras om en$refmetadataegenskap hittas i JSON-objektet. - För uppräkningsbara värdetyper ignoreras metadataegenskapen
$values.
För att metadataegenskaperna i JSON ska betraktas som välformulerad måste de följa dessa regler:
- Om inte AllowOutOfOrderMetadataProperties är inställt på
truemåste metadataegenskapen$idvara den första egenskapen i JSON-objektet. - Ett JSON-objekt som innehåller en
$refmetadataegenskap får inte innehålla några andra egenskaper. - Värdet för metadataegenskapen
$refmåste referera till en$idsom visades tidigare i JSON. - Värdet för
$idegenskaperna och$refmetadata måste vara en JSON-sträng. - För uppräkningsbara typer, till exempel List<T>, måste JSON-matrisen vara kapslad i ett JSON-objekt som innehåller en
$idegenskap och$valuesmetadataegenskap i den ordningen. (Ordningen är dock inte viktig om AllowOutOfOrderMetadataProperties den är inställd påtrue.) - För uppräkningsbara typer måste metadataegenskapen
$valuesvara en JSON-matris. - Metadataegenskapen
$valuesär endast giltig när den refererar till uppräkningsbara typer.
- Om inte AllowOutOfOrderMetadataProperties är inställt på
Om JSON inte är välformulerad utlöses en JsonException .