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