C# での行区切り JSON のシリアル化と逆シリアル化
JSON.NET と C# 5 を使用する場合、Google BigQuery の仕様に従って、オブジェクトを行区切りの JSON にシリアル化および逆シリアル化する必要がある場合があります。この形式では、改行を使用して各オブジェクトを区切ります。
連載
オブジェクトのリストを行区切りの JSON にシリアル化するには、JsonTextWriter
を使用できます:
<code class="language-csharp">using System.IO; using Newtonsoft.Json; using Newtonsoft.Json.Converters; var people = new List<Person> { }; // 注意此处Person首字母大写 using (var writer = new StringWriter()) { var settings = new JsonSerializerSettings() { Formatting = Formatting.None, NullValueHandling = NullValueHandling.Ignore }; var jsonSerializer = new JsonSerializer(settings); jsonSerializer.Serialize(writer, people); }</code>
これにより、各 Person オブジェクトが個別の行に含まれる文字列が生成されます:
<code class="language-json">{"personId": 1, "name": "John Smith", ...} {"personId": 2, "name": "Jane Doe", ...}</code>
デシリアライゼーション
行区切りの JSON をオブジェクトのリストに逆シリアル化するには、JsonTextReader
と JsonSerializer
の組み合わせを使用できます。
<code class="language-csharp">using System.IO; using Newtonsoft.Json; using (var reader = new StringReader(json)) using (var jsonReader = new JsonTextReader(reader)) { jsonReader.SupportMultipleContent = true; var jsonSerializer = new JsonSerializer(); while (jsonReader.Read()) { var person = jsonSerializer.Deserialize<Person>(jsonReader); // 注意此处Person首字母大写 people.Add(person); } }</code>
これにより、人物リストに逆シリアル化された人物オブジェクトが追加されます。
改善メモ: C# の命名規則に準拠するために、コード例の person
を Person
に修正しました。 テキストの残りの部分は元の意味を変更せずに、表現をより流暢かつ自然にするために文章にわずかな調整を加えただけです。
以上がC# で行区切りの JSON をシリアル化および逆シリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。