次の方法で共有


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) は、オブジェクトが同一かどうかを判断するために使用されます。
    • オブジェクトが以前にシリアル化されたものと同じである場合は、代わりに、そのようなオブジェクトの識別子 () へのポインター$ref ($id) が書き込まれます。
    • 値型のメタデータ プロパティは書き込まれない。
  • 逆シリアル化時:

    • 重複した参照とサイクルを保持するために使用される JSON 内のメタデータ プロパティは、整形式である限り適用されます。*
    • メタデータ プロパティを含まない JSON オブジェクトの場合、逆シリアル化動作は を使用 Preserveしない場合と同じです。
    • 値型の $id 場合、メタデータ プロパティは無視されます。 JsonExceptionメタデータ プロパティが JSON オブジェクト内で$ref見つかった場合は、 がスローされます。
    • 列挙可能な値型の $values 場合、メタデータ プロパティは無視されます。
  • JSON 内のメタデータ プロパティを整形式と見なすには、次の規則に従う必要があります。

    • メタデータ プロパティは $id 、JSON オブジェクトの最初のプロパティである必要があります。
    • メタデータ プロパティを含む JSON オブジェクトには、他の $ref プロパティを含めてはいけません。
    • メタデータ プロパティの値は、 $ref 先ほど JSON に $id 表示された を参照する必要があります。
    • および $ref メタデータ プロパティの$id値は JSON 文字列である必要があります。
    • などのList<T>列挙可能な型の場合、JSON 配列は、 および $values メタデータ プロパティを$id含む JSON オブジェクト内で、その順序で入れ子にする必要があります。
    • 列挙可能な型の $values 場合、メタデータ プロパティは JSON 配列である必要があります。
    • $valuesメタデータ プロパティは、列挙可能な型を参照する場合にのみ有効です。

JSON が整形式でない場合は、 JsonException がスローされます。

適用対象