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 陣列將會巢狀在包含$id
和$values
屬性的 JSON 物件內。 - ReferenceEquals(Object, Object) 用來判斷物件是否相同。
- 當物件與先前序列化的物件相同時,
$ref
會改為寫入這類物件的識別碼$id
( (指標 () ) 。 - 不會針對實值型別寫入任何中繼資料屬性。
- 撰寫複雜的參考型別時,序列化程式也會將中繼資料屬性寫入 (
在還原序列化上:
- JSON 內用來保留重複參考和迴圈的中繼資料屬性,只要格式正確。*
- 對於不包含任何中繼資料屬性的 JSON 物件,還原序列化行為與不使用
Preserve
相同。 - 針對實值型別,
$id
會忽略中繼資料屬性。 JsonException如果在$ref
JSON 物件內找到中繼資料屬性,則會擲回 。 - 對於可列舉的實值型別,
$values
會忽略中繼資料屬性。
若要讓 JSON 內的中繼資料屬性視為格式正確,它們必須遵循下列規則:
- 中繼資料
$id
屬性必須是 JSON 物件中的第一個屬性。 - 包含中繼資料屬性的
$ref
JSON 物件不得包含任何其他屬性。 - 中繼資料屬性的值
$ref
必須參考$id
先前出現在 JSON 中的 。 - 和
$ref
中繼資料屬性的值$id
必須是 JSON 字串。 - 對於可列舉的類型,例如 List<T> ,JSON 陣列必須以該順序巢狀于包含 和
$values
中繼資料屬性的$id
JSON 物件內。 - 對於可列舉的類型,
$values
中繼資料屬性必須是 JSON 陣列。 - 只有在
$values
參考可列舉型別時,中繼資料屬性才有效。
- 中繼資料
如果 JSON 格式不正確, JsonException 則會擲回 。