Selektive Attributdeserialisierung in JSON.NET
Unter Beibehaltung der JSON-Kompatibilität möchten Sie möglicherweise serialisierte Eigenschaften von Aufzählungen in Klassen konvertieren. JSON.NET bietet mehrere Möglichkeiten, diesem Bedarf gerecht zu werden:
Methode 1: ShouldSerialize-Methode
JSON.NET stellt die ShouldSerialize-Methode bereit. Sie können die Einbeziehung verhindern, indem Sie eine ShouldSerializePropertyName-Methode erstellen, wobei PropertyName die Eigenschaft ist, die von der Serialisierung ausgeschlossen werden soll. Zum Beispiel:
<code class="language-csharp">public class Config { public Fizz ObsoleteSetting { get; set; } public bool ShouldSerializeObsoleteSetting() { return false; // 从序列化中排除 ObsoleteSetting } }</code>
Methode 2: Verwenden Sie JObject, um
zu bedienenAnstatt JsonConvert.SerializeObject zu verwenden, konvertieren Sie das Config-Objekt in ein JSON-Objekt (JObject), entfernen Sie die erforderlichen Eigenschaften und serialisieren Sie das resultierende JObject:
<code class="language-csharp">var jo = JObject.FromObject(config); jo["ObsoleteSetting"].Parent.Remove(); var json = jo.ToString();</code>
Methode 3: Attributbasierter Ausschluss
Durch Anwenden von [JsonIgnore] auf die Zieleigenschaft wird sichergestellt, dass diese von der Serialisierung ausgeschlossen wird. Um die Eigenschaft jedoch zu deserialisieren, erstellen Sie einen privaten Setter mit demselben Eigenschaftsnamen und wenden Sie [JsonProperty] darauf an. Zum Beispiel:
<code class="language-csharp">public class Config { [JsonIgnore] public Fizz ObsoleteSetting { get; set; } [JsonProperty("ObsoleteSetting")] private Fizz ObsoleteSettingSetter { set { ObsoleteSetting = value; } } }</code>
Durch den Einsatz dieser Technologien können Sie die Serialisierung und Deserialisierung von Eigenschaften selektiv steuern und so die Kompatibilität mit vorhandenen JSON-Konfigurationen sicherstellen und gleichzeitig Eigenschaftsänderungen berücksichtigen.
Das obige ist der detaillierte Inhalt vonWie kann ich Eigenschaften in JSON.NET selektiv deserialisieren und gleichzeitig die Kompatibilität wahren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!