Heim >Backend-Entwicklung >C++ >Wie kann ich JSON mit inkonsistenten Array- und Einzelobjektstrukturen für dieselbe Eigenschaft deserialisieren?

Wie kann ich JSON mit inkonsistenten Array- und Einzelobjektstrukturen für dieselbe Eigenschaft deserialisieren?

DDD
DDDOriginal
2025-01-12 19:11:43978Durchsuche

How Can I Deserialize JSON with Inconsistent Array and Single Object Structures for the Same Property?

Verarbeitung gemischter Sammlungen und einzelner Objekte in JSON-Daten

Herkömmliche Deserialisierungstechniken können beim Deserialisieren von JSON-Daten, die Arrays und einzelne Objekte mit denselben Eigenschaften enthalten, auf Schwierigkeiten stoßen. In diesem Artikel wird das spezielle Szenario erläutert, in dem die von Facebook zurückgegebene JSON-Antwort Mediendaten manchmal als Objekte und manchmal als Arrays darstellt.

Um dieses Problem zu lösen, können Sie einen benutzerdefinierten JSON-Konverter verwenden. Dieser Konverter fungiert als Vermittler zwischen dem Standard-Deserialisierungsprozess von JSON.NET und der Zielklasse. In diesem Fall ist die Zielklasse FacebookAttachment, die eine List-Eigenschaft namens Media enthält.

Der benutzerdefinierte Konverter FacebookMediaJsonConverter überschreibt die ReadJson-Methode, um inkonsistente Datenformate zu verarbeiten. Insbesondere prüft es JsonReader.TokenType und führt eine entsprechende Deserialisierung durch:

<code>public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
  if (reader.TokenType == JsonToken.StartArray)
    return serializer.Deserialize<List<facebookmedia>>(reader);
  else
    return null;
}</code>

Wenn ein Array gefunden wird, gibt der Konverter das deserialisierte Array zurück. Wenn jedoch ein einzelnes Objekt angetroffen wird, wird null zurückgegeben. Dies liegt daran, dass die Zieleigenschaft „Medien“ eine Liste erwartet.

Durch die Verwendung dieses Konverters kann sich der Deserialisierungsprozess an inkonsistente Formatierungen in JSON-Antworten anpassen. Allerdings ist zu beachten, dass diese Methode nicht alle möglichen Änderungen in der JSON-Struktur berücksichtigt und möglicherweise nicht für alle Szenarien geeignet ist.

Das obige ist der detaillierte Inhalt vonWie kann ich JSON mit inkonsistenten Array- und Einzelobjektstrukturen für dieselbe Eigenschaft deserialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn