Maison > développement back-end > C++ > Comment sérialiser et désérialiser le JSON délimité par des lignes (LDJSON) en C# ?

Comment sérialiser et désérialiser le JSON délimité par des lignes (LDJSON) en C# ?

Mary-Kate Olsen
Libérer: 2025-01-22 16:35:10
original
796 Les gens l'ont consulté

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

Sérialisation et désérialisation de JSON délimité par des lignes (LDJSON) en C#

Comprendre ce processus est essentiel lorsque vous devez sérialiser et désérialiser des objets au format JSON (LDJSON) délimité par des lignes (couramment utilisé dans la préparation des données Google BigQuery). LDJSON représente les données sous la forme d'une série d'objets JSON délimités par des nouvelles lignes.

Analyser manuellement les données LDJSON

JsonTextReader dans Json.NET fournit un moyen d'analyser manuellement les données LDJSON. JsonTextReader peut gérer des objets JSON contigus en définissant l'indicateur SupportMultipleContent sur true.

Premier exemple JSON (objet simple)

Considérez les données LDJSON suivantes :

<code>{"some":"thing1"}
{"some":"thing2"}
{"some":"thing3"}</code>
Copier après la connexion

La méthode d'analyse est la suivante :

<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>
Copier après la connexion

Deuxième exemple JSON (objet imbriqué)

Pour un JSON plus complexe :

<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>
Copier après la connexion

En utilisant la même approche, ajoutez chaque objet désérialisé à la liste :

<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>
Copier après la connexion

Remarque : Json.Net 10.0.4 et supérieur prend également en charge les entrées JSON séparées par des virgules, offrant une flexibilité supplémentaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal