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 возникает исключение .