L'analyse de fichiers JSON volumineux peut être un défi dans .NET, surtout si la structure JSON n'est pas standard . Un problème courant rencontré lors de l'utilisation de la méthode JsonConvert.Deserialize est qu'elle peut lever une exception pour les fichiers volumineux.
Ce problème se produit généralement lorsque le fichier JSON contient un tableau suivi d'un autre tableau sans délimiteur. Ce format n'est pas valide dans JSON, ce qui entraîne l'échec de JsonConvert.Deserialize.
Pour résoudre ce problème, Json.NET fournit la classe JsonTextReader, qui permet une analyse plus flexible du contenu JSON. En définissant l'indicateur SupportMultipleContent sur true dans JsonTextReader, nous pouvons analyser plusieurs tableaux à partir d'un seul fichier JSON en tant qu'objets distincts.
Voici un exemple de code mis à jour illustrant cette technique :
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 approche nous permet d'analyser le fichier JSON non standard d'une manière efficace en mémoire, quel que soit le nombre de tableaux ou d'éléments dans chaque tableau. L'exemple JSON fourni dans la question peut être traité avec succès à l'aide de cette technique.
Pour une démonstration complète, reportez-vous au lien suivant : https://dotnetfiddle.net/2TQa8p
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!