Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mensiri dan Menyahseri JSON Dibatasi Talian (LDJSON) dalam C#?

Bagaimana untuk Mensiri dan Menyahseri JSON Dibatasi Talian (LDJSON) dalam C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-22 16:35:10797semak imbas

How to Serialize and Deserialize Line Delimited JSON (LDJSON) in C#?

Pensirilan dan Penyahserikatan JSON Dibataskan Talian (LDJSON) dalam C#

Memahami proses ini adalah penting apabila anda perlu mensiri dan menyahsiri objek ke dalam format JSON (LDJSON) yang dibatasi baris (biasa digunakan dalam penyediaan data Google BigQuery). LDJSON mewakili data sebagai satu siri objek JSON yang dibatasi baris baharu.

Menghuraikan data LDJSON secara manual

JsonTextReader dalam Json.NET menyediakan cara untuk menghuraikan data LDJSON secara manual. JsonTextReader boleh mengendalikan objek JSON bersebelahan dengan menetapkan bendera SupportMultipleContent kepada benar.

Contoh JSON pertama (objek ringkas)

Pertimbangkan data LDJSON berikut:

<code>{"some":"thing1"}
{"some":"thing2"}
{"some":"thing3"}</code>

Kaedah analisis adalah seperti berikut:

<code class="language-csharp">var json = "{\"some\":\"thing1\"}\r\n{\"some\":\"thing2\"}\r\n{\"some\":\"thing3\"}";
var jsonReader = new JsonTextReader(new StringReader(json))
{
    SupportMultipleContent = true // 允许多个JSON对象
};

var jsonSerializer = new JsonSerializer();
while (jsonReader.Read())
{
    var foo = jsonSerializer.Deserialize<foo>(jsonReader);
}</code>

Contoh JSON kedua (objek bersarang)

Untuk JSON yang lebih kompleks:

<code class="language-json">{"kind": "person", "fullName": "John Doe", "age": 22, "gender": "Male", "citiesLived": [{ "place": "Seattle", "numberOfYears": 5}, {"place": "Stockholm", "numberOfYears": 6}]}
{"kind": "person", "fullName": "Jane Austen", "age": 24, "gender": "Female", "citiesLived": [{"place": "Los Angeles", "numberOfYears": 2}, {"place": "Tokyo", "numberOfYears": 2}]}</code>

Menggunakan pendekatan yang sama, tambahkan setiap objek desiri pada senarai:

<code class="language-csharp">var json = "{...}"; // 定义JSON字符串
var jsonReader = new JsonTextReader(new StringReader(json)) { SupportMultipleContent = true };
var jsonSerializer = new JsonSerializer();
var listOfPeople = new List<person>();

while (jsonReader.Read())
{
    listOfPeople.Add(jsonSerializer.Deserialize<person>(jsonReader));
}</code>

Nota: Json.Net 10.0.4 dan ke atas turut menyokong entri JSON yang dipisahkan koma, memberikan fleksibiliti tambahan.

Atas ialah kandungan terperinci Bagaimana untuk Mensiri dan Menyahseri JSON Dibatasi Talian (LDJSON) dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn