Heim >Backend-Entwicklung >C++ >Wie serialisiere und deserialisiere ich zeilengetrennten 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!