Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich einen Stream verketteter JSON-Objekte in JSON.NET?

Wie deserialisiere ich einen Stream verketteter JSON-Objekte in JSON.NET?

Susan Sarandon
Susan SarandonOriginal
2025-01-09 21:28:47499Durchsuche

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

JSON-Objektstream mit JSON.NET analysieren

Beim Deserialisieren eines verketteten Stroms von JSON-Objekten ohne Trennzeichen besteht das Problem darin, wie man mit JSON.NET richtig damit umgeht.

Die versuchte Lösung umfasst die Verwendung eines Stream-Readers, eines JSON-Textreaders und einer benutzerdefinierten Schleife, um den Stream in ein IEnumerable zu deserialisieren. Bei dieser Methode ist jedoch eine Ausnahme aufgetreten, die auf ein unerwartetes „EndObject“-Tag hinweist.

Um dies zu korrigieren, müssen einige Änderungen an der Schleife vorgenommen werden:

<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>

Es ist wichtig zu beachten, dass das zurückgegebene IEnumerable iteriert werden muss, während der Stream geöffnet bleibt:

<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>

Diese Technologie befindet sich auf der Dotnetfiddle-Website (https://www.php.cn/link/a3b1c195e3033e5086eb7482c0942e4a.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich einen Stream verketteter JSON-Objekte in JSON.NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn