ReferenceHandler.Preserve Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera obiekt wskazujący, czy właściwości metadanych są honorowane, gdy obiekty i tablice JSON są deserializowane do typów odwołań i zapisywane, gdy typy odwołań są serializowane. Jest to konieczne do utworzenia dwukierunkowego kodu JSON z obiektów zawierających cykle lub zduplikowane odwołania.
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
Wartość właściwości
Uwagi
Na serializacji:
- Podczas pisania złożonych typów odwołań serializator zapisuje również w nich właściwości metadanych (
$id
,$values
i$ref
). - Dane wyjściowe JSON będą zawierać dodatkową
$id
właściwość dla każdego obiektu, a dla każdego typu wyliczalnego emitowana tablica JSON zostanie zagnieżdżona w obiekcie JSON zawierającym$id
właściwość i$values
. - ReferenceEquals(Object, Object) służy do określania, czy obiekty są identyczne.
- Gdy obiekt jest identyczny z wcześniej serializowaną, zamiast tego jest zapisywany wskaźnik (
$ref
) do identyfikatora ($id
) takiego obiektu. - Żadne właściwości metadanych nie są zapisywane dla typów wartości.
- Podczas pisania złożonych typów odwołań serializator zapisuje również w nich właściwości metadanych (
Podczas deserializacji:
- Właściwości metadanych w formacie JSON, które są używane do zachowania zduplikowanych odwołań i cykli, będą uznawane tak długo, jak są dobrze sformułowane.*
- W przypadku obiektów JSON, które nie zawierają żadnych właściwości metadanych, zachowanie deserializacji jest identyczne, jak nie jest używane .
Preserve
- W przypadku typów
$id
wartości właściwość metadanych jest ignorowana. Obiekt JsonException jest zgłaszany, jeśli$ref
właściwość metadanych zostanie znaleziona w obiekcie JSON. - W przypadku typów
$values
wartości możliwych do wyliczenia właściwość metadanych jest ignorowana.
Aby właściwości metadanych w formacie JSON były uznawane za dobrze sformułowane, muszą one postępować zgodnie z następującymi regułami:
- Właściwość
$id
metadata musi być pierwszą właściwością w obiekcie JSON. - Obiekt JSON zawierający
$ref
właściwość metadanych nie może zawierać żadnych innych właściwości. - Wartość
$ref
właściwości metadanych musi odwoływać się do elementu$id
, który pojawił się wcześniej w formacie JSON. - Wartość
$id
właściwości metadanych i$ref
musi być ciągiem JSON. - W przypadku typów wyliczalnych, takich jak List<T>, tablica JSON musi być zagnieżdżona w obiekcie JSON zawierającym
$id
właściwość i$values
metadanych w tej kolejności. - W przypadku typów
$values
wyliczalnych właściwość metadanych musi być tablicą JSON. - Właściwość metadanych jest prawidłowa
$values
tylko w przypadku odwoływania się do typów wyliczalnych.
- Właściwość
Jeśli kod JSON nie jest poprawnie sformułowany, JsonException jest zgłaszany element .