Compartir a través de


ReferenceHandler.Preserve Propiedad

Definición

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, $valuesy $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.
  • 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.

Si el json no tiene un formato correcto, se produce una JsonException excepción .

Se aplica a