ReferenceHandler.Preserve Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
,$values
e$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.
- Quando si scrivono tipi di riferimento complessi, il serializzatore scrive anche proprietà dei metadati (
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.
- La
Se il codice JSON non è ben formato, viene generato un JsonException oggetto .