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 (
$id
e$values``$ref
) dentro deles. - O JSON de saída conterá uma propriedade extra
$id
para cada objeto e, para cada tipo enumerável, a matriz JSON emitida será aninhada dentro de um objeto JSON que contém um e$values
uma$id
propriedade. - 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
$id
propriedade de metadados é ignorada. Um JsonException será gerado se uma$ref
propriedade de metadados for encontrada dentro do objeto JSON. - Para tipos de valor enumeráveis, a
$values
propriedade de metadados é ignorada.
Para que as propriedades de metadados dentro do JSON sejam consideradas bem formadas, elas devem seguir estas regras:
- A
$id
propriedade de metadados deve ser a primeira propriedade no objeto JSON. - Um objeto JSON que contém uma
$ref
propriedade de metadados não deve conter nenhuma outra propriedade. - O valor da
$ref
propriedade de metadados deve se referir a um$id
que tenha sido exibido anteriormente no JSON. - O valor das
$id
propriedades e$ref
metadados 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
$id
propriedade e$values
metadados, nessa ordem. - Para tipos enumeráveis, a
$values
propriedade de metadados deve ser uma matriz JSON. - A
$values
propriedade 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.