JsonSerializerOptions.AllowOutOfOrderMetadataProperties Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger ett värde som anger om JSON-metadataegenskaper kan anges efter vanliga egenskaper i ett deserialiserat JSON-objekt.
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
Egenskapsvärde
true om JSON-metadataegenskaper, till exempel \$id och \$type, inte måste anges i början av det deserialiserade JSON-objektet. false om JSON-metadataegenskaper måste anges före vanliga egenskaper.
Undantag
Den här egenskapen anges när serialisering eller deserialisering har inträffat.
Kommentarer
Som standard System.Text.Json kräver att JSON-metadataegenskaper som $id, $typeoch $ref visas i början av ett JSON-objekt. Om du ställer in den här egenskapen för att true lätta på det kravet så att metadata kan visas efter vanliga egenskaper. Detta är användbart när du använder JSON från producenter som inte garanterar metadatabeställning.
Det finns dock prestandakonsekvenser när den här egenskapen är aktiverad:
-
Buffring: När den här egenskapen är aktiverad kan deserialiseraren inte längre bearbeta objektegenskaper i en enda vidarebefordran. Eftersom metadataegenskaper som visas senare i objektet (till exempel en
$typediskriminerande) kan ändra hur alla tidigare egenskaper ska tolkas, måste deserialiseraren buffrar hela JSON-objektet i minnet innan det kan checka in på en deserialiseringsstrategi. I scenarier med strömmande deserialisering kan detta avsevärt öka minnesförbrukningen, särskilt för stora JSON-nyttolaster. - Backtracking: Med kapslade objekt är kostnaden för oordningsmetadata multiplicativ. Deserialiseraren kan behöva backa (dvs. läsa om och bearbeta tidigare buffrade data) en gång för varje nivå av kapslingsdjup i det inkommande objektdiagrammet. Det innebär att den värsta deserialiseringstiden är O(n × d), där n är längden på JSON-indata och d är djupet i objektdiagrammet.