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 метаданных допустимо только при ссылке на перечислимые типы.

Если JSON не является хорошо сформированным, JsonException создается исключение.

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