Heim >Backend-Entwicklung >C++ >Wie serialisiere und deserialisiere ich zeilengetrennten JSON (LDJSON) in C#?

Wie serialisiere und deserialisiere ich zeilengetrennten JSON (LDJSON) in C#?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-22 16:35:10852Durchsuche

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

Serialisierung und Deserialisierung von zeilengetrenntem JSON (LDJSON) in C#

Das Verständnis dieses Prozesses ist von entscheidender Bedeutung, wenn Sie Objekte in das zeilengetrennte JSON-Format (LDJSON) serialisieren und deserialisieren müssen (häufig bei der Google BigQuery-Datenvorbereitung verwendet). LDJSON stellt Daten als eine Reihe von durch Zeilenumbrüche getrennten JSON-Objekten dar.

LDJSON-Daten manuell analysieren

JsonTextReader in Json.NET bietet eine Möglichkeit, LDJSON-Daten manuell zu analysieren. JsonTextReader kann zusammenhängende JSON-Objekte verarbeiten, indem das SupportMultipleContent-Flag auf true gesetzt wird.

Erstes JSON-Beispiel (einfaches Objekt)

Berücksichtigen Sie die folgenden LDJSON-Daten:

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

Die Analysemethode ist wie folgt:

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

Zweites JSON-Beispiel (verschachteltes Objekt)

Für komplexeres JSON:

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

Fügen Sie auf die gleiche Weise jedes deserialisierte Objekt zur Liste hinzu:

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

Hinweis: Json.Net 10.0.4 und höher unterstützt auch durch Kommas getrennte JSON-Einträge und bietet so zusätzliche Flexibilität.

Das obige ist der detaillierte Inhalt vonWie serialisiere und deserialisiere ich zeilengetrennten JSON (LDJSON) in C#?. 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