ホームページ > バックエンド開発 > C++ > C# で行区切り JSON (LDJSON) をシリアル化および逆シリアル化する方法

C# で行区切り JSON (LDJSON) をシリアル化および逆シリアル化する方法

Mary-Kate Olsen
リリース: 2025-01-22 16:35:10
オリジナル
796 人が閲覧しました

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

C# での行区切り JSON (LDJSON) のシリアル化と逆シリアル化

オブジェクトを行区切りの JSON (LDJSON) 形式 (Google BigQuery データ準備で一般的に使用される) にシリアル化および逆シリアル化する必要がある場合、このプロセスを理解することが重要です。 LDJSON は、データを改行で区切られた一連の JSON オブジェクトとして表します。

LDJSON データを手動で解析する

Json.NET の JsonTextReader は、LDJSON データを手動で解析する方法を提供します。 JsonTextReader は、SupportMultipleContent フラグを true に設定することで、連続した JSON オブジェクトを処理できます。

最初の JSON 例 (単純なオブジェクト)

次の LDJSON データについて考えてみましょう:

<code>{"some":"thing1"}
{"some":"thing2"}
{"some":"thing3"}</code>
ログイン後にコピー

分析方法は以下のとおりです。

<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>
ログイン後にコピー

2 番目の JSON 例 (ネストされたオブジェクト)

より複雑な 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>
ログイン後にコピー

同じアプローチを使用して、逆シリアル化された各オブジェクトをリストに追加します。

<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>
ログイン後にコピー

注: Json.Net 10.0.4 以降では、カンマ区切りの JSON エントリもサポートされており、さらなる柔軟性が提供されます。

以上がC# で行区切り JSON (LDJSON) をシリアル化および逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート