Maison > développement back-end > C++ > Comment désérialiser un flux d'objets JSON concaténés dans JSON.NET ?

Comment désérialiser un flux d'objets JSON concaténés dans JSON.NET ?

Susan Sarandon
Libérer: 2025-01-09 21:28:47
original
498 Les gens l'ont consulté

How to Deserialize a Stream of Concatenated JSON Objects in JSON.NET?

Analyser le flux d'objets JSON à l'aide de JSON.NET

Lors de la désérialisation d'un flux concaténé d'objets JSON sans délimiteurs, le problème est de savoir comment le gérer correctement à l'aide de JSON.NET.

La solution tentée implique l'utilisation d'un lecteur de flux, d'un lecteur de texte JSON et d'une boucle personnalisée pour désérialiser le flux en un IEnumerable. Cependant, cette méthode a rencontré une exception indiquant une balise « EndObject » inattendue.

Pour corriger cela, quelques modifications sont à apporter à la boucle :

<code class="language-csharp">public IEnumerable<TResult> ReadJson<TResult>(Stream stream)
{
    var serializer = new JsonSerializer();

    using (var reader = new StreamReader(stream))
    using (var jsonReader = new JsonTextReader(reader))
    {
        jsonReader.SupportMultipleContent = true;

        while (jsonReader.Read())
        {
            yield return serializer.Deserialize<TResult>(jsonReader);
        }
    }
}</code>
Copier après la connexion

Il est important de noter que le IEnumerable renvoyé doit être itéré pendant que le flux reste ouvert :

<code class="language-csharp">using (var stream = /* some stream */)
{
    IEnumerable<MyClass> result = ReadJson<MyClass>(stream);

    foreach (var item in result)
    {
        Console.WriteLine(item.MyProperty);
    }
}</code>
Copier après la connexion

Cette technologie est sur le site dotnetfiddle (https://www.php.cn/link/a3b1c195e3033e5086eb7482c0942e4a.

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