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) は、オブジェクトが同一かどうかを判断するために使用されます。
- オブジェクトが以前にシリアル化されたものと同じである場合は、代わりに、そのようなオブジェクトの識別子 () へのポインター
$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 がスローされます。
適用対象
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET