Maison > développement back-end > C++ > Comment analyser des fichiers JSON volumineux et invalides dans .NET avec JSON.NET ?

Comment analyser des fichiers JSON volumineux et invalides dans .NET avec JSON.NET ?

Barbara Streisand
Libérer: 2025-01-06 04:19:39
original
972 Les gens l'ont consulté

How to Parse Large, Invalid JSON Files in .NET with JSON.NET?

Analyse de gros fichiers JSON non valides dans .NET avec JSON.NET

Dans cet article, nous aborderons le défi de l'analyse de gros fichiers JSON pouvant contenir une syntaxe non valide ou formats spécifiques non pris en charge nativement par Json.NET.

Le problème survient lorsque les données JSON sont constituées de plusieurs tableaux séparés par des crochets fermants et ouvrants. au lieu d'être imbriqué dans un seul tableau. Cet écart par rapport à la syntaxe JSON standard peut entraîner des difficultés pour les méthodes de désérialisation intégrées de Json.NET.

Json.NET et données JSON invalides

Initialement, l'utilisation de JsonConvert.DeserializeObject pour analyser de gros fichiers JSON peut conduire à des exceptions lorsque les données dépassent les limites de la mémoire. De même, tenter de désérialiser directement vers un JArray peut également entraîner des erreurs.

Résoudre le problème d'analyse

Pour gérer efficacement ce scénario, nous utiliserons une approche personnalisée impliquant JsonTextReader. En définissant l'indicateur SupportMultipleContent sur true, le lecteur peut reconnaître le format JSON non valide et traiter chaque tableau comme une section de contenu distincte.

Analyse des données JSON non valides

Le code C# suivant montre comment implémenter 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);
        }
    }
}
Copier après la connexion

En accédant à chaque tableau indépendamment grâce à cette méthode, nous pouvons désérialiser efficacement les données JSON ligne par ligne, surmonter efficacement les limitations de mémoire et de syntaxe rencontrées avec les méthodes d'analyse Json.NET standard.

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