Maison > développement back-end > C++ > Comment puis-je analyser efficacement des fichiers JSON volumineux et non standard dans .NET ?

Comment puis-je analyser efficacement des fichiers JSON volumineux et non standard dans .NET ?

Susan Sarandon
Libérer: 2025-01-06 04:23:47
original
429 Les gens l'ont consulté

How Can I Efficiently Parse Large, Non-Standard JSON Files in .NET?

Analyse de gros fichiers JSON dans .NET

Lorsque vous traitez des fichiers JSON de taille importante, il n'est pas rare de rencontrer des défis en utilisant la méthode standard JsonConvert.Deserialize. Cet article abordera ce problème en examinant une solution unique proposée par Json.NET.

Problèmes de mémoire

Comme indiqué dans la question d'origine, la méthode de désérialisation par défaut peut entraîner des exceptions de mémoire lors de la gestion gros fichiers JSON. Cela est souvent dû à la nature en mémoire du processus de désérialisation, qui peut devenir problématique pour des ensembles de données volumineux.

Format JSON invalide

Dans le scénario spécifique décrit dans la question, un une complication survient. Le fichier JSON contenait plusieurs tableaux séparés par une syntaxe non valide, le rendant non conforme à la norme JSON. Ce format invalide posait des problèmes pour la désérialisation automatique de Json.NET.

Solution : JsonTextReader

Pour surmonter ces défis, Json.NET propose une solution spécialisée : le JsonTextReader. En utilisant directement un JsonTextReader pour lire le fichier JSON, nous pouvons définir l'indicateur SupportMultipleContent sur true. Cet indicateur permet au lecteur de gérer les formats JSON non standard contenant plusieurs tableaux.

Approche de streaming

Au lieu de tenter de désérialiser l'intégralité du fichier en une seule fois, nous adoptons une approche de streaming. À l'aide d'une boucle, nous pouvons désérialiser chaque élément individuel dans le fichier JSON, ce qui nous permet de traiter les données de manière efficace en termes de mémoire.

Exemple

L'extrait de code ci-dessous illustre cette approche de streaming :

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);
        }
    }
}
Copier après la connexion

Conclusion

En utilisant JsonTextReader avec l'indicateur SupportMultipleContent défini, nous pouvons analyser efficacement les gros fichiers JSON, même face à une syntaxe non standard. Cette approche garantit à la fois l'efficacité de la mémoire et l'intégrité des données.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal