ReferenceHandler.Preserve Proprietà

Definizione

Ottiene un oggetto che indica se le proprietà dei metadati vengono rispettate quando gli oggetti JSON e le matrici vengono deserializzati in tipi di riferimento e scritti quando vengono serializzati i tipi di riferimento. Questo è necessario per creare codice JSON round trippable da oggetti che contengono cicli o riferimenti duplicati.

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

Valore della proprietà

Commenti

  • In Serialize:On Serialize:

    • Quando si scrivono tipi di riferimento complessi, il serializzatore scrive anche le proprietà dei metadati ($id, $valuese $ref) all'interno di esse.
    • Il codice JSON di output conterrà una proprietà aggiuntiva $id per ogni oggetto e per ogni tipo enumerabile la matrice JSON generata verrà annidata all'interno di un oggetto JSON contenente una $id proprietà e $values .
    • ReferenceEquals(Object, Object) viene utilizzato per determinare se gli oggetti sono identici.
    • Quando un oggetto è identico a quello serializzato in precedenza, viene scritto un puntatore ($ref) all'identificatore ($id) di tale oggetto.
    • Per i tipi valore non vengono scritte proprietà di metadati.
  • In Deserialize:

    • Le proprietà dei metadati all'interno del codice JSON usate per mantenere i riferimenti duplicati e i cicli verranno rispettate purché siano ben formate.*
    • Per gli oggetti JSON che non contengono proprietà di metadati, il comportamento di deserializzazione è identico a non usare Preserve.
    • Per i tipi valore, la $id proprietà dei metadati viene ignorata. Viene JsonException generata un'eccezione se viene trovata una $ref proprietà di metadati all'interno dell'oggetto JSON.
    • Per i tipi valore enumerabili, la $values proprietà dei metadati viene ignorata.
  • Affinché le proprietà dei metadati all'interno del codice JSON siano considerate ben formate, devono seguire queste regole:

    • A meno che non AllowOutOfOrderMetadataProperties sia impostato su true, la $id proprietà dei metadati deve essere la prima proprietà nell'oggetto JSON.
    • Un oggetto JSON che contiene una $ref proprietà di metadati non deve contenere altre proprietà.
    • Il valore della $ref proprietà dei metadati deve fare riferimento a un $id che è apparso in precedenza in JSON.
    • Il valore delle proprietà e $ref dei $id metadati deve essere una stringa JSON.
    • Per i tipi enumerabili, ad esempio List<T>, la matrice JSON deve essere annidata all'interno di un oggetto JSON contenente una $id proprietà di metadati e $values in tale ordine. L'ordine non è tuttavia importante se AllowOutOfOrderMetadataProperties è impostato su true.
    • Per i tipi enumerabili, la $values proprietà dei metadati deve essere una matrice JSON.
    • La $values proprietà dei metadati è valida solo quando si fa riferimento a tipi enumerabili.

Se il formato JSON non è corretto, viene generata un'eccezione JsonException .

Si applica a