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. 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
$idper ogni oggetto e per ogni tipo enumerabile la matrice JSON generata verrà annidata all'interno di un oggetto JSON contenente una$idproprietà 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.
- Quando si scrivono tipi di riferimento complessi, il serializzatore scrive anche le proprietà dei 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
$idproprietà dei metadati viene ignorata. Viene JsonException generata un'eccezione se viene trovata una$refproprietà di metadati all'interno dell'oggetto JSON. - Per i tipi valore enumerabili, la
$valuesproprietà 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$idproprietà dei metadati deve essere la prima proprietà nell'oggetto JSON. - Un oggetto JSON che contiene una
$refproprietà di metadati non deve contenere altre proprietà. - Il valore della
$refproprietà dei metadati deve fare riferimento a un$idche è apparso in precedenza in JSON. - Il valore delle proprietà e
$refdei$idmetadati 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
$idproprietà di metadati e$valuesin tale ordine. L'ordine non è tuttavia importante se AllowOutOfOrderMetadataProperties è impostato sutrue. - Per i tipi enumerabili, la
$valuesproprietà dei metadati deve essere una matrice JSON. - La
$valuesproprietà dei metadati è valida solo quando si fa riferimento a tipi enumerabili.
- A meno che non AllowOutOfOrderMetadataProperties sia impostato su
Se il formato JSON non è corretto, viene generata un'eccezione JsonException .