C# で JSON をファイルに書き込む
 
この投稿では、C# プログラミング言語を使用して基本的な JSON オブジェクトを作成し、それらをファイルに書き込む方法を学びます。 まず、JSON とは何かをしっかりと理解しておく必要があります。
JSON 形式
JSON は JavaScript Object Notation の略で、最小限のデータを交換するための標準です。 JavaScript プログラミング言語の一部を基盤として使用します。
JSON は完全に言語にとらわれない構造であり、特殊文字は使用しません。 人間が JSON を読み書きするのは簡単で、コンピュータが JSON データを生成して解釈するのは簡単です。
XML に代わるものであり、最も基本的なデータ型の組み込みサポートを提供します。 JavaScript Object Notation という用語は、JavaScript と JSON の両方で使用される構文を指します。
テキストベースの言語であるため、ユーザーにとっては読みやすく、同時に機械が解釈するのも簡単です。 数年前まで、プログラマーは XML に依存して、Web サービスなどのさまざまなサービス アプリケーション間の通信を容易にしていました。
しかし、Web API の人気が高まるにつれて、ユーザーは JSON を代替データ シリアライゼーション標準の候補として調査し始めました。
Json.NET をダウンロードしてインストールする
データを JSON 形式でシリアル化するには、.NET Framework によって提供されるネイティブ クラスを使用するか、他のサードパーティ コンポーネントを使用します。 このチュートリアルでは、NewtonSoft シリアライゼーション ライブラリを使用して JSON 構造をシリアライズします。
- 
開始するには、Microsoft Visual Studio ワークプレースを準備し、 Newtonsoftパッケージをインストールする必要があります。
- 
Microsoft Visual Studio を起動し、メニュー バーから Fileを選択し、次にNewとProjectオプションを選択します。
- 
左側から Visual C#を選択し、Console App (.NET Framework)をクリックします。 適切な名前を付けて、プロジェクトを見つけます。writejsonByZeeshanと名付けました。 名前を付けたら、OKをクリックします。 
- 
プロジェクトが作成されたので、 Json.NETへの参照を含めます。 これを行うには、Solution Explorer領域を右クリックし、Manage NuGet Packages for Solutionを選択します。
- 
Newtonsoft.Jsonを選択した後、右側のパネルからInstallを選択します。 
- 
ダウンロードが完了すると、コンポーネントがインストールされ、 Json.NETに緑色のチェックマークが表示されます。

- Solution Explorerの参照に移動すると、- Newtonsoft.jsonの参照が追加されていることがわかります。- Newtonsoft.jsonを追加したら、JSON を作成するコードを作成します。
Json.NET を使用して JSON をファイルに書き込む
Newtonsoft への参照は、ソリューションが最初に開発されたときに以前にソリューションに含まれていました。 ここで、JSON をシリアル化して生成する最初のコードの作業を開始します。
基本的な JSON 構造から始めましょう。次に、コードを 1 行ずつ実行し、その機能をより深く分析しながら、より複雑な構造に向かって徐々に進んでいきましょう。 まず、プロジェクトに新しいクラスを追加して、構造を JSON ファイルに入れることから始めましょう。
- 
まず、 Main()に次のライブラリを追加します。using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks;
- 
クラスを追加するには、 Solution Explorerパネルを右クリックし、Addを左クリックして、ドロップダウン メニューからクラスを選択します。Studentクラスに名前を付けたように、適切な名前を付けた後、最後のステップはAddボタンをクリックすることです。 
- 
変数オブジェクトを正常に作成したら、新しいクラスで変数オブジェクトの定義を開始しましょう。 StudentクラスにName、Rollnum、Grade、およびCityを含め、次の値を割り当てました。
```c#
class Student {
  public string Name = "Muhammad Zeeshan";
  public int Rollnum = 3227;
  public string Grade = "A";
  public string City = "Islamabad";
}
```
- 
そこで、 Main関数でsという名前のStudentクラスのインスタンスを作成します。Student s = new Student();
- 
次に、 JsonConvert.SerializeObjectメソッドを使用して、先ほど指定したクラス オブジェクトを JSON 形式に変換します。 シリアル化されたデータをSerializedJsonResultという名前の文字列変数に入れましょう。string SerializedJsonResult = JsonConvert.SerializeObject(s);
- 
データが JSON 形式にシリアル化されたので、データを保存する場所を指定する必要があります。 jsonpathという名前の文字列変数が使用されます。string jsonpath = "D:/jsondata/studentdata.json";
- 
if条件を使用して、パスが正しいかどうかを確認します。 パスが既に存在する場合、コードは新しいパスを作成して既存のパスを上書きし、古いパスを破棄します。
```c#
if (File.Exists(jsonpath)) {
  File.Delete(jsonpath);
  using (var st = new StreamWriter(jsonpath, true)) {
    st.WriteLine(SerializedJsonResult.ToString());
    st.Close();
  }
}
```
- 
パスが利用できない場合、 else-ifは新しいパスを作成し、JSON をファイルに書き込みます。else if (!File.Exists(jsonpath)) { using (var st = new StreamWriter(jsonpath, true)) { st.WriteLine(SerializedJsonResult.ToString()); st.Close(); } }
完全なソース コード
コード例 (Student クラス):
class Student {
  public string Name = "Muhammad Zeeshan";
  public int Rollnum = 3227;
  public string Grade = "A";
  public string City = "Islamabad";
}
コード例 (Main クラス):
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace writejsonByZeeshan {
  class Program {
    static void Main(string[] args) {
      Student s = new Student();
      string SerializedJsonResult = JsonConvert.SerializeObject(s);
      string jsonpath = "D:/jsondata/studentdata.json";
      if (File.Exists(jsonpath)) {
        File.Delete(jsonpath);
        using (var st = new StreamWriter(jsonpath, true)) {
          st.WriteLine(SerializedJsonResult.ToString());
          st.Close();
        }
      }
      else if (!File.Exists(jsonpath)) {
        using (var st = new StreamWriter(jsonpath, true)) {
          st.WriteLine(SerializedJsonResult.ToString());
          st.Close();
        }
      }
    }
  }
}
出力:
{"Name":"Muhammad Zeeshan","Rollnum":3227,"Grade":"A","City":"Islamabad"}
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn関連記事 - Csharp JSON
- C# 解析 JSON
- C# オブジェクトを JSON 文字列に変換する
- C# で JSON をサーバーに投稿する
- C# で JSON を逆シリアル化する
- JSON 文字列を C# オブジェクトに変換する
