ReferenceHandler.Preserve 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取一个 对象,该对象指示在将 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 则会引发 。