Lors de l'analyse de gros fichiers JSON, il est crucial de prendre en compte les incohérences potentielles dans la structure des données. Souvent, les services Web renvoient des réponses JSON qui ne sont pas entièrement conformes au format standard. Un problème courant est la présence de plusieurs structures de tableaux dans un seul fichier JSON.
Dans votre scénario spécifique, vous avez rencontré ce problème où les données JSON contenaient des tableaux séparés par un crochet fermant et un crochet ouvrant. Ce format irrégulier a rendu impossible la désérialisation de l'intégralité du JSON en tant que tableau unique à l'aide de méthodes conventionnelles telles que JsonConvert.DeserializeObject.
Pour relever ce défi , vous pouvez tirer parti de la flexibilité de l'analyse basée sur les flux dans Json.NET. En créant un JsonTextReader et en définissant sa propriété SupportMultipleContent sur true, vous permettez au lecteur de traiter le JSON comme plusieurs blocs de contenu distincts.
Voici un extrait de code modifié qui illustre cette approche :
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); } } }
Cette méthode lit le contenu JSON flux par flux, analysant chaque objet comme une entité distincte. Lorsqu'il rencontre une accolade ouvrante, il désérialise un seul objet contact dans votre classe conteneur Contact et imprime les informations de contact.
L'avantage de cette approche est qu'elle traite les données JSON de manière incrémentielle, sans tenter d'analyser les données JSON. fichier entier à la fois. Ceci est particulièrement avantageux pour les fichiers JSON volumineux qui dépassent la capacité de mémoire disponible.
En utilisant l'analyse basée sur les flux avec prise en charge de plusieurs contenus, vous pouvez gérer efficacement les structures JSON irrégulières et analyser efficacement vos données, quelle que soit leur taille. ou complexité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!