Udostępnij za pośrednictwem


ReferenceHandler.Preserve Właściwość

Definicja

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, $valuesi $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 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.

Jeśli kod JSON nie jest poprawnie sformułowany, JsonException jest zgłaszany element .

Dotyczy