Поделиться через


ReferenceHandler.Preserve Свойство

Определение

Возвращает объект , указывающий, учитываются ли свойства метаданных при десериализации объектов и массивов JSON в ссылочные типы и записываются при сериализации ссылочных типов. Это необходимо для создания обходных данных JSON из объектов, содержащих циклы или дублирующиеся ссылки.

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

Значение свойства

Комментарии

  • При сериализации:

    • При написании сложных ссылочных типов сериализатор также записывает в них свойства метаданных ($id, $valuesи $ref).
    • Выходные данные JSON будут содержать дополнительное $id свойство для каждого объекта, а для каждого перечисляемого типа создаваемый массив JSON будет вложен в объект JSON, $id содержащий свойство и $values .
    • ReferenceEquals(Object, Object) используется для определения того, идентичны ли объекты.
    • Если объект идентичен ранее сериализованному, вместо него записывается указатель ($ref) на идентификатор ($id) такого объекта.
    • Свойства метаданных для типов значений не записываются.
  • При десериализации:

    • Свойства метаданных в JSON, которые используются для сохранения повторяющихся ссылок и циклов, будут учитываться при условии, что они имеют правильный формат.*
    • Для объектов JSON, не содержащих свойств метаданных, поведение десериализации идентично использованию Preserve.
    • Для типов значений $id свойство метаданных игнорируется. Если JsonException свойство метаданных найдено в объекте JSON, возникает исключение $ref .
    • Для перечисляемых типов значений $values свойство метаданных игнорируется.
  • Чтобы свойства метаданных в JSON считались правильно сформированными, они должны соответствовать следующим правилам:

    • Свойство $id метаданных должно быть первым свойством в объекте JSON.
    • Объект JSON, содержащий $ref свойство метаданных, не должен содержать никаких других свойств.
    • Значение свойства метаданных $ref должно ссылаться на $id объект , появившийся ранее в JSON.
    • Значением свойств метаданных $id и $ref должна быть строка JSON.
    • Для перечисляемых типов, таких как List<T>, массив JSON должен быть вложен в объект JSON, содержащий $id свойство метаданных и $values в указанном порядке.
    • Для перечисляемых типов $values свойство метаданных должно быть массивом JSON.
    • Свойство $values метаданных допустимо только при ссылке на перечисляемые типы.

Если JSON не имеет правильного формата, JsonException возникает исключение .

Применяется к