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
Comentários
Em serializar:On Serialize:
- Ao escrever tipos de referência complexos, o serializador também grava as propriedades de metadados (
$id,$valuese$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
$idpropriedade 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$valuespropriedade e.The output JSON will contain an extra$idproperty for every object, and for every enumerable type the JSON array emitted will be nested within a JSON object containing an$idand$valuesproperty. - 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 escrever tipos de referência complexos, o serializador também grava as propriedades de metadados (
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 usingPreserve. - Para tipos de valor, a
$idpropriedade de metadados é ignorada.For value types, the$idmetadata property is ignored. Um JsonException será gerado se uma$refpropriedade de metadados for encontrada dentro do objeto JSON.A JsonException is thrown if a$refmetadata property is found within the JSON object. - Para tipos de valor enumerável, a
$valuesPropriedade Metadata é ignorada.For enumerable value types, the$valuesmetadata 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
$idpropriedade de metadados deve ser a primeira propriedade no objeto JSON.The$idmetadata property must be the first property in the JSON object. - Um objeto JSON que contém uma
$refpropriedade de metadados não deve conter outras propriedades.A JSON object that contains a$refmetadata property must not contain any other properties. - O valor da
$refPropriedade Metadata deve se referir a um$idque apareceu anteriormente no JSON.The value of the$refmetadata property must refer to an$idthat has appeared earlier in the JSON. - O valor das
$idPropriedades de$refmetadados e deve ser uma cadeia de caracteres JSON.The value of the$idand$refmetadata 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$valuespropriedade de metadados e, nessa ordem.For enumerable types, such as List<T>, the JSON array must be nested within a JSON object containing an$idand$valuesmetadata property, in that order. - Para tipos enumeráveis, a
$valuespropriedade de metadados deve ser uma matriz JSON.For enumerable types, the$valuesmetadata property must be a JSON array. - A
$valuesPropriedade Metadata só é válida quando se refere a tipos enumeráveis.The$valuesmetadata 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.