ReferenceHandler.Preserve Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém um objeto que indica se as propriedades de metadados são honradas quando objetos JSON e matrizes são desserializados em tipos de referência e gravados quando os tipos de referência são serializados. Isso é necessário para criar json trippable de ida e volta a partir de objetos que contêm 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; }
member this.Preserve : System.Text.Json.Serialization.ReferenceHandler
Public Shared ReadOnly Property Preserve As ReferenceHandler
Valor da propriedade
Comentários
Em Serializar:
- Ao escrever tipos de referência complexos, o serializador também grava propriedades de metadados (
$ide$values``$ref) dentro deles. - O JSON de saída conterá uma propriedade extra
$idpara cada objeto e, para cada tipo enumerável, a matriz JSON emitida será aninhada dentro de um objeto JSON que contém um e$valuesuma$idpropriedade. - ReferenceEquals(Object, Object) é usado para determinar se os objetos são idênticos.
- Quando um objeto é idêntico a um serializado anteriormente, um ponteiro (
$ref) para o identificador ($id) desse objeto é escrito em vez disso. - Nenhuma propriedade de metadados é gravada para tipos de valor.
- Ao escrever tipos de referência complexos, o serializador também grava propriedades de metadados (
Ao desserializar:
- As propriedades de metadados dentro do JSON que são usadas para preservar referências e ciclos duplicados serão honradas desde que estejam bem formadas.*
- Para objetos JSON que não contêm nenhuma propriedade de metadados, o comportamento de desserialização é idêntico a não usar
Preserve. - Para tipos de valor, a
$idpropriedade de metadados é ignorada. Um JsonException será gerado se uma$refpropriedade de metadados for encontrada dentro do objeto JSON. - Para tipos de valor enumeráveis, a
$valuespropriedade de metadados é ignorada.
Para que as propriedades de metadados dentro do JSON sejam consideradas bem formadas, elas devem seguir estas regras:
- A
$idpropriedade de metadados deve ser a primeira propriedade no objeto JSON. - Um objeto JSON que contém uma
$refpropriedade de metadados não deve conter nenhuma outra propriedade. - O valor da
$refpropriedade de metadados deve se referir a um$idque tenha sido exibido anteriormente no JSON. - O valor das
$idpropriedades e$refmetadados deve ser uma cadeia de caracteres JSON. - Para tipos enumeráveis, como List<T>, a matriz JSON deve ser aninhada dentro de um objeto JSON que contém uma
$idpropriedade e$valuesmetadados, nessa ordem. - Para tipos enumeráveis, a
$valuespropriedade de metadados deve ser uma matriz JSON. - A
$valuespropriedade de metadados só é válida ao se referir a tipos enumeráveis.
- A
Se o JSON não estiver bem formado, um JsonException será lançado.