Beim Parsen großer JSON-Dateien ist es wichtig, mögliche Inkonsistenzen in der Datenstruktur zu berücksichtigen. Webdienste geben häufig JSON-Antworten zurück, die nicht vollständig dem Standardformat entsprechen. Ein häufiges Problem ist das Vorhandensein mehrerer Array-Strukturen in einer einzelnen JSON-Datei.
In Ihrem spezifischen Szenario ist dieses Problem aufgetreten, bei dem die JSON-Daten einzelne enthalten Arrays, getrennt durch eine schließende und eine öffnende Klammer. Dieses unregelmäßige Format machte es unmöglich, den gesamten JSON als einzelnes Array mit herkömmlichen Methoden wie JsonConvert.DeserializeObject zu deserialisieren.
Um diese Herausforderung zu bewältigen können Sie die Flexibilität der Stream-basierten Analyse in Json.NET nutzen. Indem Sie einen JsonTextReader erstellen und seine SupportMultipleContent-Eigenschaft auf true setzen, ermöglichen Sie dem Leser, den JSON als mehrere unterschiedliche Inhaltsblöcke zu behandeln.
Hier ist ein modifizierter Codeausschnitt, der diesen Ansatz demonstriert:
using (WebClient client = new WebClient()) using (Stream stream = client.OpenRead(stringUrl)) using (StreamReader streamReader = new StreamReader(stream)) using (JsonTextReader reader = new JsonTextReader(streamReader)) { reader.SupportMultipleContent = true; var serializer = new JsonSerializer(); while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { Contact c = serializer.Deserialize<Contact>(reader); Console.WriteLine(c.FirstName + " " + c.LastName); } } }
Diese Methode liest den JSON-Inhalt Stream für Stream und analysiert jedes Objekt als separate Entität. Wenn es auf eine öffnende geschweifte Klammer stößt, deserialisiert es ein einzelnes Kontaktobjekt in Ihre Kontaktcontainerklasse und gibt die Kontaktinformationen aus.
Der Vorteil dieses Ansatzes besteht darin, dass die JSON-Daten inkrementell verarbeitet werden, ohne dass versucht wird, sie zu analysieren gesamte Datei auf einmal. Dies ist insbesondere bei großen JSON-Dateien von Vorteil, die die verfügbare Speicherkapazität überschreiten.
Durch die Verwendung von streambasiertem Parsing mit Unterstützung für mehrere Inhalte können Sie unregelmäßige JSON-Strukturen effektiv verarbeiten und Ihre Daten unabhängig von ihrer Größe effizient analysieren oder Komplexität.
Das obige ist der detaillierte Inhalt vonWie kann ich große, nicht standardmäßige JSON-Dateien mit mehreren Arrays effizient analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!