ReferenceHandler.Preserve Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
$idpara cada objeto, e para cada tipo enumerável o array JSON emitido será aninhado dentro de um objeto JSON contendo uma$idpropriedade 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 ()$iddesse objeto. - Não são escritas propriedades de metadados para tipos de valor.
- Ao escrever tipos de referência complexos, o serializador também escreve propriedades de metadados (
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
$idpropriedade de metadados é ignorada. A é lançado se uma$refpropriedade de JsonException metadados for encontrada dentro do objeto JSON. - Para tipos de valor enumeráveis, a
$valuespropriedade 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$idpropriedade de metadados deve ser a primeira propriedade no objeto JSON. - Um objeto JSON que contenha uma
$refpropriedade de metadados não deve conter quaisquer outras propriedades. - O valor da
$refpropriedade de metadados deve referir-se a um$idque apareceu anteriormente no JSON. - O valor das
$idpropriedades de metadados e$refdeve ser uma cadeia JSON. - Para tipos enumeráveis, como List<T>, o array JSON deve ser aninhado dentro de um objeto JSON contendo uma
$idpropriedade de metadados e (e$valuesmetadados), nessa ordem. (No entanto, a ordem não é importante se AllowOutOfOrderMetadataProperties for definida comotrue.) - Para tipos enumeráveis, a
$valuespropriedade de metadados deve ser um array JSON. - A
$valuespropriedade dos metadados só é válida quando se refere a tipos enumeráveis.
- A menos que AllowOutOfOrderMetadataProperties esteja definida para
Se o JSON não estiver bem formado, lança-se a.JsonException