ReferenceHandler.Preserve Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene un objeto que indica si se respetan las propiedades de metadatos cuando los objetos y matrices JSON se deserializan en tipos de referencia y se escriben cuando se serializan los tipos de referencia. Esto es necesario para crear un archivo JSON de recorrido de ida y vuelta a partir de objetos que incluyan ciclos o referencias 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 propiedad
Comentarios
En Serializar:
- Al escribir tipos de referencia complejos, el serializador también escribe propiedades de metadatos (
$id
,$values
y$ref
) dentro de ellos. - El JSON de salida contendrá una propiedad adicional
$id
para cada objeto y, para cada tipo enumerable, la matriz JSON emitida se anidará dentro de un objeto JSON que contiene una$id
propiedad y$values
. - ReferenceEquals(Object, Object) se usa para determinar si los objetos son idénticos.
- Cuando un objeto es idéntico a uno serializado anteriormente, en su lugar se escribe un puntero (
$ref
) al identificador ($id
) de este objeto. - No se escriben propiedades de metadatos para tipos de valor.
- Al escribir tipos de referencia complejos, el serializador también escribe propiedades de metadatos (
En Deserializar:
- Las propiedades de metadatos dentro del JSON que se usan para conservar las referencias duplicadas y los ciclos se respetarán siempre que estén bien formados.*
- En el caso de los objetos JSON que no contienen ninguna propiedad de metadatos, el comportamiento de deserialización es idéntico a no usar
Preserve
. - En el caso de los tipos de valor, se omite la
$id
propiedad de metadatos. JsonException Se produce una excepción si se encuentra una$ref
propiedad de metadatos dentro del objeto JSON. - En el caso de los tipos de valor enumerables, se omite la
$values
propiedad de metadatos.
Para que las propiedades de metadatos de JSON se consideren bien formadas, deben seguir estas reglas:
- La
$id
propiedad de metadatos debe ser la primera propiedad del objeto JSON. - Un objeto JSON que contiene una
$ref
propiedad de metadatos no debe contener ninguna otra propiedad. - El valor de la
$ref
propiedad de metadatos debe hacer referencia a un$id
que ha aparecido anteriormente en el JSON. - El valor de las propiedades de metadatos
$id
y$ref
debe ser una cadena JSON. - Para los tipos enumerables, como List<T>, la matriz JSON debe estar anidada dentro de un objeto JSON que contenga una
$id
propiedad de metadatos y$values
, en ese orden. - Para los tipos enumerables, la
$values
propiedad de metadatos debe ser una matriz JSON. - La
$values
propiedad de metadatos solo es válida cuando se hace referencia a tipos enumerables.
- La
Si el json no tiene un formato correcto, se produce una JsonException excepción .