Menghuraikan strim objek JSON menggunakan JSON.NET
JSON.NET menyediakan penyelesaian yang mudah untuk menyahsiri aliran objek JSON yang disambungkan. Dalam mencapai matlamat ini, anda mungkin menghadapi isu bagaimana untuk memajukan pembaca selepas setiap penyahserialisasian.
Coretan kod yang anda berikan cuba untuk menyahsiri aliran objek JSON, tetapi gagal kerana ralat token yang tidak dijangka. Untuk menyelesaikan isu ini, ubah suai kod seperti berikut:
<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>
Dalam kod yang diubah suai ini, gelung telah dilaraskan untuk membaca setiap objek JSON daripada strim dan kemudian menghasilkan hasil desiri. Adalah penting untuk mengulangi IEnumerable<TResult>
yang dikembalikan semasa strim yang disediakan terbuka untuk mengelakkan ralat pelupusan objek. Selain itu, semakan !jsonReader.EOF
telah ditambahkan untuk mengelakkan gelung tak terhingga dan blok try-catch
telah ditambahkan untuk mengendalikan potensi JsonReaderException
seperti menghadapi objek JSON yang tidak sah.
Berikut ialah contoh:
<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>
Untuk mendapatkan maklumat lanjut tentang menggunakan JsonReader untuk mengendalikan berbilang serpihan JSON, sila rujuk dokumentasi rasmi JSON.NET.
Atas ialah kandungan terperinci Bagaimana Menghuraikan Strim Objek JSON Menggunakan JSON.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!