JsonSerializerOptions.AllowOutOfOrderMetadataProperties Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of JSON-metagegevenseigenschappen kunnen worden opgegeven na reguliere eigenschappen in een gedeserialiseerde JSON-object.
public:
property bool AllowOutOfOrderMetadataProperties { bool get(); void set(bool value); };
public bool AllowOutOfOrderMetadataProperties { get; set; }
member this.AllowOutOfOrderMetadataProperties : bool with get, set
Public Property AllowOutOfOrderMetadataProperties As Boolean
Waarde van eigenschap
true als eigenschappen van JSON-metagegevens, zoals \$id en \$type, niet hoeven te worden opgegeven aan het begin van het gedeserialiseerde JSON-object; false als eigenschappen van JSON-metagegevens moeten worden opgegeven vóór reguliere eigenschappen.
Uitzonderingen
Deze eigenschap wordt ingesteld nadat serialisatie of deserialisatie is opgetreden.
Opmerkingen
System.Text.Json Standaard is vereist dat eigenschappen van JSON-metagegevens, zoals $id, $typeen $ref worden weergegeven aan het begin van een JSON-object. Als u deze eigenschap instelt om die vereiste te true versoepelen, kunnen metagegevens na normale eigenschappen worden weergegeven. Dit is handig bij het verbruik van JSON van producenten die geen metagegevensvolgorde garanderen.
Er zijn echter gevolgen voor de prestaties wanneer deze eigenschap is ingeschakeld:
-
Buffering: wanneer deze eigenschap is ingeschakeld, kan de deserializer geen objecteigenschappen meer verwerken in één doorstuurdoorgang. Omdat metagegevenseigenschappen die later in het object worden weergegeven (bijvoorbeeld een
$typediscriminator), kunnen wijzigen hoe alle eerdere eigenschappen moeten worden geïnterpreteerd, moet de deserializer het hele JSON-object in het geheugen bufferen voordat het kan worden doorgevoerd in een deserialisatiestrategie. In scenario's voor streamingdeserialisatie kan dit het geheugenverbruik aanzienlijk verhogen, met name voor grote JSON-nettoladingen. - Backtracking: Met geneste objecten zijn de kosten van verouderde metagegevens vermenigvuldigbaar. De deserializer moet mogelijk een backtrack (dat wil gezegd, eerder gebufferde gegevens opnieuw lezen en verwerken) eenmaal voor elk niveau van nestdiepte in de binnenkomende objectgrafiek. Dit betekent dat de slechtste deserialisatietijd O(n × d) is, waarbij n de lengte is van de JSON-invoer en d de diepte van de objectgrafiek.