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 если$refсвойство метаданных найдено в объекте JSON. - Для типов
$valuesперечисленных значений свойство метаданных игнорируется.
Чтобы свойства метаданных в JSON считались хорошо сформированными, они должны соответствовать следующим правилам:
- Если AllowOutOfOrderMetadataProperties не задано значение
true,$idсвойство метаданных должно быть первым свойством в объекте JSON. - Объект JSON, содержащий
$refсвойство метаданных, не должен содержать других свойств. - Значение свойства метаданных
$refдолжно ссылаться на$idто, что появилось ранее в ФОРМАТЕ JSON. - Значение свойств метаданных
$id$refдолжно быть строкой JSON. - Для перечисленных типов, таких как List<T>массив JSON, должен быть вложен в объект JSON, содержащий
$idсвойство метаданных и$valuesсвойство метаданных, в этом порядке. (Однако порядок не важен, если AllowOutOfOrderMetadataProperties задано значениеtrue.) - Для перечисленных типов
$valuesсвойство метаданных должно быть массивом JSON. - Свойство
$valuesметаданных допустимо только при ссылке на перечислимые типы.
- Если AllowOutOfOrderMetadataProperties не задано значение
Если JSON не является хорошо сформированным, JsonException создается исключение.