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属性的$idJSON 对象中。 - ReferenceEquals(Object, Object) 用于确定 对象是否相同。
- 当对象与以前序列化的对象相同时,将改为写入指向标识符 (
$id() ) 的指针$ref。 - 不会为值类型写入元数据属性。
- 编写复杂引用类型时,序列化程序还会 (
反序列化时:
- JSON 中用于保留重复引用和周期的元数据属性,只要格式良好,它们就会得到遵守。*
- 对于不包含任何元数据属性的 JSON 对象,反序列化行为与不使用
Preserve相同。 - 对于值类型,
$id将忽略元数据属性。 JsonException如果在$refJSON 对象中找到元数据属性,则会引发 。 - 对于可枚举值类型,
$values将忽略元数据属性。
要使 JSON 中的元数据属性被视为格式正确的,它们必须遵循以下规则:
- 元数据
$id属性必须是 JSON 对象中的第一个属性。 - 包含元数据属性的
$refJSON 对象不得包含任何其他属性。 - 元数据属性的值
$ref必须引用$id前面在 JSON 中出现的 。 - 和
$ref元数据属性的值$id必须是 JSON 字符串。 - 对于可枚举类型(如 List<T>),JSON 数组必须按照该顺序嵌套在包含
$id和$values元数据属性的 JSON 对象中。 - 对于可枚举类型,
$values元数据属性必须是 JSON 数组。 - 元数据
$values属性仅在引用可枚举类型时有效。
- 元数据
如果 JSON 格式不正确, JsonException 则会引发 。