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 数组将嵌套在包含 和 $values 属性的 $id JSON 对象中。
    • ReferenceEquals(Object, Object) 用于确定 对象是否相同。
    • 当对象与以前序列化的对象相同时,将改为写入指向标识符 ($id () ) 的指针$ref
    • 不会为值类型写入元数据属性。
  • 反序列化时:

    • JSON 中用于保留重复引用和周期的元数据属性,只要格式良好,它们就会得到遵守。*
    • 对于不包含任何元数据属性的 JSON 对象,反序列化行为与不使用 Preserve相同。
    • 对于值类型, $id 将忽略元数据属性。 JsonException如果在 $ref JSON 对象中找到元数据属性,则会引发 。
    • 对于可枚举值类型, $values 将忽略元数据属性。
  • 要使 JSON 中的元数据属性被视为格式正确的,它们必须遵循以下规则:

    • 元数据 $id 属性必须是 JSON 对象中的第一个属性。
    • 包含元数据属性的 $ref JSON 对象不得包含任何其他属性。
    • 元数据属性的值 $ref 必须引用 $id 前面在 JSON 中出现的 。
    • $ref 元数据属性的值$id必须是 JSON 字符串。
    • 对于可枚举类型(如 List<T>),JSON 数组必须按照该顺序嵌套在包含 $id$values 元数据属性的 JSON 对象中。
    • 对于可枚举类型, $values 元数据属性必须是 JSON 数组。
    • 元数据 $values 属性仅在引用可枚举类型时有效。

如果 JSON 格式不正确, JsonException 则会引发 。

适用于