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) は、オブジェクトが同一かどうかを判断するために使用されます。
- オブジェクトが以前にシリアル化されたものと同じ場合、そのオブジェクトの識別子 (
$id) へのポインター ($ref) が代わりに書き込まれます。 - 値型のメタデータ プロパティは書き込まれなくなります。
- 複合参照型を記述する場合、シリアライザーはメタデータ プロパティ (
逆シリアル化時:
- 重複した参照とサイクルを保持するために使用される JSON 内のメタデータ プロパティは、整形式である限り受け入れられます。*
- メタデータ プロパティを含まない JSON オブジェクトの場合、逆シリアル化の動作は、
Preserveを使用しない場合と同じです。 - 値型の場合、
$idメタデータ プロパティは無視されます。 JSON オブジェクト内で$refメタデータ プロパティが見つかった場合、JsonExceptionがスローされます。 - 列挙可能な値型の場合、
$valuesメタデータ プロパティは無視されます。
JSON 内のメタデータ プロパティを整形式と見なすには、次の規則に従う必要があります。
-
AllowOutOfOrderMetadataPropertiesが
trueに設定されていない限り、$idメタデータ プロパティは JSON オブジェクトの最初のプロパティである必要があります。 -
$refメタデータ プロパティを含む JSON オブジェクトには、他のプロパティを含めてはなりません。 -
$refメタデータ プロパティの値は、JSON で前に表示された$idを参照する必要があります。 -
$idおよび$refメタデータ プロパティの値は JSON 文字列である必要があります。 -
List<T>などの列挙可能な型の場合、JSON 配列は、
$idと$valuesメタデータ プロパティを含む JSON オブジェクト内で、その順序で入れ子にする必要があります。 (ただし、 AllowOutOfOrderMetadataProperties がtrueに設定されている場合、順序は重要ではありません)。 - 列挙可能な型の場合、
$valuesメタデータ プロパティは JSON 配列である必要があります。 -
$valuesメタデータ プロパティは、列挙可能な型を参照する場合にのみ有効です。
-
AllowOutOfOrderMetadataPropertiesが
JSON が整形式でない場合は、 JsonException がスローされます。