ReferenceHandler.Preserve Propriedade

Definição

Propriedades de metadados serão respeitadas ao desserializar objetos JSON e matrizes em tipos de referência e gravadas ao serializar tipos de referência.Metadata properties will be honored when deserializing JSON objects and arrays into reference types and written when serializing reference types. Isso é necessário para criar JSON de ida e volta de objetos que contêm ciclos ou referências duplicadas.This is necessary to create round-trippable JSON from objects that contain cycles or duplicate references.

public:
 static property System::Text::Json::Serialization::ReferenceHandler ^ Preserve { System::Text::Json::Serialization::ReferenceHandler ^ get(); };
public static System.Text.Json.Serialization.ReferenceHandler Preserve { get; }
member this.Preserve : System.Text.Json.Serialization.ReferenceHandler
Public Shared ReadOnly Property Preserve As ReferenceHandler

Valor da propriedade

ReferenceHandler

Comentários

  • Em serializar:On Serialize:

    • Ao escrever tipos de referência complexos, o serializador também grava as propriedades de metadados ( $id , $values e $ref ) dentro delas.When writing complex reference types, the serializer also writes metadata properties ($id, $values, and $ref) within them.
    • O JSON de saída conterá uma $id propriedade extra para cada objeto e, para cada tipo enumerável, a matriz JSON emitida será aninhada dentro de um objeto JSON que contém uma $id $values propriedade e.The output JSON will contain an extra $id property for every object, and for every enumerable type the JSON array emitted will be nested within a JSON object containing an $id and $values property.
    • ReferenceEquals(Object, Object) é usado para determinar se os objetos são idênticos.ReferenceEquals(Object, Object) is used to determine whether objects are identical.
    • Quando um objeto é idêntico a um anteriormente serializado, um ponteiro ( $ref ) para o identificador ( $id ) desse objeto é escrito em vez disso.When an object is identical to a previously serialized one, a pointer ($ref) to the identifier ($id) of such object is written instead.
    • Nenhuma propriedade de metadados é gravada para tipos de valor.No metadata properties are written for value types.
  • Ao desserializar:On Deserialize:

    • As propriedades de metadados dentro do JSON que são usadas para preservar as referências e os ciclos duplicados serão respeitadas contanto que sejam bem formadas.*The metadata properties within the JSON that are used to preserve duplicated references and cycles will be honored as long as they are well-formed.*
    • Para objetos JSON que não contêm nenhuma propriedade de metadados, o comportamento de desserialização é idêntico a não usar Preserve .For JSON objects that don't contain any metadata properties, the deserialization behavior is identical to not using Preserve.
    • Para tipos de valor, a $id propriedade de metadados é ignorada.For value types, the $id metadata property is ignored. Um JsonException será gerado se uma $ref propriedade de metadados for encontrada dentro do objeto JSON.A JsonException is thrown if a $ref metadata property is found within the JSON object.
    • Para tipos de valor enumerável, a $values Propriedade Metadata é ignorada.For enumerable value types, the $values metadata property is ignored.

* Para que as propriedades de metadados dentro do JSON sejam consideradas bem formadas, elas devem seguir estas regras:* For the metadata properties within the JSON to be considered well-formed, they must follow these rules:

  • A $id propriedade de metadados deve ser a primeira propriedade no objeto JSON.The $id metadata property must be the first property in the JSON object.
  • Um objeto JSON que contém uma $ref propriedade de metadados não deve conter outras propriedades.A JSON object that contains a $ref metadata property must not contain any other properties.
  • O valor da $ref Propriedade Metadata deve se referir a um $id que apareceu anteriormente no JSON.The value of the $ref metadata property must refer to an $id that has appeared earlier in the JSON.
  • O valor das $id Propriedades de $ref metadados e deve ser uma cadeia de caracteres JSON.The value of the $id and $ref metadata properties must be a JSON string.
  • Para tipos enumeráveis, como List<T> , a matriz JSON deve ser aninhada dentro de um objeto JSON que contém uma $id $values propriedade de metadados e, nessa ordem.For enumerable types, such as List<T>, the JSON array must be nested within a JSON object containing an $id and $values metadata property, in that order.
  • Para tipos enumeráveis, a $values propriedade de metadados deve ser uma matriz JSON.For enumerable types, the $values metadata property must be a JSON array.
  • A $values Propriedade Metadata só é válida quando se refere a tipos enumeráveis.The $values metadata property is only valid when referring to enumerable types.

Se o JSON não estiver bem formado, JsonException será gerado um.If the JSON is not well-formed, a JsonException is thrown.

Aplica-se a