ReferenceHandler.Preserve Propriedade

Definição

Obtém um objeto que indica se as propriedades dos metadados são respeitadas quando objetos JSON e arrays são desserializados em tipos de referência, e escritos quando os tipos de referência são serializados. Isto é necessário para criar JSON round-trippable a partir de objetos que contenham ciclos ou referências duplicadas.

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

Valor de Propriedade

Observações

  • Sobre Serializar:

    • Ao escrever tipos de referência complexos, o serializador também escreve propriedades de metadados ($id, $values, e $ref) dentro deles.
    • O JSON de saída conterá uma propriedade extra $id para cada objeto, e para cada tipo enumerável o array JSON emitido será aninhado dentro de um objeto JSON contendo uma $id propriedade e $values .
    • ReferenceEquals(Object, Object) é usado para determinar se os objetos são idênticos.
    • Quando um objeto é idêntico a um anteriormente serializado, escreve-se em vez disso um ponteiro ($ref) para o identificador ()$id desse objeto.
    • Não são escritas propriedades de metadados para tipos de valor.
  • Sobre Deserializar:

    • As propriedades de metadados dentro do JSON usadas para preservar referências e ciclos duplicados serão respeitadas desde que estejam bem formadas.*
    • Para objetos JSON que não contêm quaisquer propriedades de metadados, o comportamento de desserialização é idêntico ao de não usar Preserve.
    • Para os tipos de valor, a $id propriedade de metadados é ignorada. A é lançado se uma $ref propriedade de JsonException metadados for encontrada dentro do objeto JSON.
    • Para tipos de valor enumeráveis, a $values propriedade de metadados é ignorada.
  • Para que as propriedades dos metadados dentro do JSON sejam consideradas bem formadas, devem seguir estas regras:

    • A menos que AllowOutOfOrderMetadataProperties esteja definida para true, a $id propriedade de metadados deve ser a primeira propriedade no objeto JSON.
    • Um objeto JSON que contenha uma $ref propriedade de metadados não deve conter quaisquer outras propriedades.
    • O valor da $ref propriedade de metadados deve referir-se a um $id que apareceu anteriormente no JSON.
    • O valor das $id propriedades de metadados e $ref deve ser uma cadeia JSON.
    • Para tipos enumeráveis, como List<T>, o array JSON deve ser aninhado dentro de um objeto JSON contendo uma $id propriedade de metadados e (e $values metadados), nessa ordem. (No entanto, a ordem não é importante se AllowOutOfOrderMetadataProperties for definida como true.)
    • Para tipos enumeráveis, a $values propriedade de metadados deve ser um array JSON.
    • A $values propriedade dos metadados só é válida quando se refere a tipos enumeráveis.

Se o JSON não estiver bem formado, lança-se a.JsonException

Aplica-se a