ReferenceHandler.Preserve Egenskap

Definition

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 $id egenskap för varje objekt, och för varje uppräkningsbar typ kapslas JSON-matrisen som genereras i ett JSON-objekt som innehåller en $id och $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.
  • 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 $ref metadataegenskap 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 $id vara den första egenskapen i JSON-objektet.
    • Ett JSON-objekt som innehåller en $ref metadataegenskap får inte innehålla några andra egenskaper.
    • Värdet för metadataegenskapen $ref måste referera till en $id som visades tidigare i JSON.
    • Värdet för $id egenskaperna och $ref metadata 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 $id egenskap och $values metadataegenskap i den ordningen. (Ordningen är dock inte viktig om AllowOutOfOrderMetadataProperties den är inställd på true.)
    • För uppräkningsbara typer måste metadataegenskapen $values vara en JSON-matris.
    • Metadataegenskapen $values är endast giltig när den refererar till uppräkningsbara typer.

Om JSON inte är välformulerad utlöses en JsonException .

Gäller för