Heim > Backend-Entwicklung > C++ > Wie analysiere ich einen Stream von JSON-Objekten mit JSON.NET?

Wie analysiere ich einen Stream von JSON-Objekten mit JSON.NET?

Linda Hamilton
Freigeben: 2025-01-09 21:31:47
Original
422 Leute haben es durchsucht

How to Parse a Stream of JSON Objects Using JSON.NET?

JSON-Objektstream mit JSON.NET analysieren

JSON.NET bietet eine praktische Lösung zum Deserialisieren eines verbundenen Streams von JSON-Objekten. Um dies zu erreichen, könnten Sie auf die Frage stoßen, wie Sie den Leser nach jeder Deserialisierung vorantreiben können.

Der von Ihnen bereitgestellte Codeausschnitt versucht, einen Stream von JSON-Objekten zu deserialisieren, schlägt jedoch aufgrund eines unerwarteten Tokenfehlers fehl. Um dieses Problem zu beheben, ändern Sie den Code wie folgt:

<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() && !jsonReader.EOF) // 添加EOF检查
        {
            try
            {
                yield return serializer.Deserialize<TResult>(jsonReader);
            }
            catch (JsonReaderException ex)
            {
                // 处理JSON读取异常,例如跳过无效的JSON对象
                Console.WriteLine($"JSON解析错误: {ex.Message}");
                // 可选:在此处添加日志记录或其他错误处理机制
            }
        }
    }
}</code>
Nach dem Login kopieren

In diesem geänderten Code wurde die Schleife angepasst, um jedes JSON-Objekt aus dem Stream zu lesen und dann das deserialisierte Ergebnis zu erzeugen. Es ist wichtig, das zurückgegebene IEnumerable<TResult> zu durchlaufen, während der bereitgestellte Stream geöffnet ist, um Fehler bei der Objektentsorgung zu vermeiden. Darüber hinaus wurde eine !jsonReader.EOF-Prüfung hinzugefügt, um Endlosschleifen zu vermeiden, und ein try-catch-Block wurde hinzugefügt, um potenzielle JsonReaderException wie das Auftreffen eines ungültigen JSON-Objekts zu behandeln.

Hier ist ein Beispiel:

<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>
Nach dem Login kopieren

Weitere Informationen zur Verwendung von JsonReader zur Verarbeitung mehrerer JSON-Fragmente finden Sie in der offiziellen JSON.NET-Dokumentation.

Das obige ist der detaillierte Inhalt vonWie analysiere ich einen Stream von JSON-Objekten mit JSON.NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage