Condividi tramite


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. Questa operazione è necessaria per creare un file JSON di cui è possibile eseguire il round-trip 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 Serializzare:

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

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

    • 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 oggetto 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à e $values metadati, in tale ordine.
    • 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 codice JSON non è ben formato, viene generato un JsonException oggetto .

Si applica a