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 陣列將會巢狀在包含 $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 則會擲回 。

適用於