C# で JSON をファイルに書き込む

Muhammad Zeeshan 2024年2月15日
  1. JSON 形式
  2. Json.NET をダウンロードしてインストールする
  3. Json.NET を使用して JSON をファイルに書き込む
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 構造をシリアライズします。

  1. 開始するには、Microsoft Visual Studio ワークプレースを準備し、Newtonsoft パッケージをインストールする必要があります。

  2. Microsoft Visual Studio を起動し、メニュー バーから File を選択し、次に NewProject オプションを選択します。

  3. 左側から Visual C# を選択し、Console App (.NET Framework) をクリックします。 適切な名前を付けて、プロジェクトを見つけます。

    writejsonByZeeshan と名付けました。 名前を付けたら、OKをクリックします。

    Json.NET のインストール - 新しいファイル

  4. プロジェクトが作成されたので、Json.NET への参照を含めます。 これを行うには、Solution Explorer 領域を右クリックし、Manage NuGet Packages for Solution を選択します。

  5. Newtonsoft.Json を選択した後、右側のパネルから Install を選択します。

    Json.NET のインストール

  6. ダウンロードが完了すると、コンポーネントがインストールされ、Json.NET に緑色のチェックマークが表示されます。

    Json.NET をダウンロード

  7. Solution Explorer の参照に移動すると、Newtonsoft.json の参照が追加されていることがわかります。 Newtonsoft.json を追加したら、JSON を作成するコードを作成します。

Json.NET を使用して JSON をファイルに書き込む

Newtonsoft への参照は、ソリューションが最初に開発されたときに以前にソリューションに含まれていました。 ここで、JSON をシリアル化して生成する最初のコードの作業を開始します。

基本的な JSON 構造から始めましょう。次に、コードを 1 行ずつ実行し、その機能をより深く分析しながら、より複雑な構造に向かって徐々に進んでいきましょう。 まず、プロジェクトに新しいクラスを追加して、構造を JSON ファイルに入れることから始めましょう。

  1. まず、Main() に次のライブラリを追加します。

    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
  2. クラスを追加するには、Solution Explorer パネルを右クリックし、Add を左クリックして、ドロップダウン メニューからクラスを選択します。 Student クラスに名前を付けたように、適切な名前を付けた後、最後のステップは Add ボタンをクリックすることです。

    C# Write JSON Into File - Add Student Class

  3. 変数オブジェクトを正常に作成したら、新しいクラスで変数オブジェクトの定義を開始しましょう。 Student クラスに NameRollnumGrade、および City を含め、次の値を割り当てました。

    class Student {
      public string Name = "Muhammad Zeeshan";
      public int Rollnum = 3227;
      public string Grade = "A";
      public string City = "Islamabad";
    }
    
  4. そこで、Main 関数で s という名前の Student クラスのインスタンスを作成します。

    Student s = new Student();
    
  5. 次に、JsonConvert.SerializeObject メソッドを使用して、先ほど指定したクラス オブジェクトを JSON 形式に変換します。 シリアル化されたデータを SerializedJsonResult という名前の文字列変数に入れましょう。

    string SerializedJsonResult = JsonConvert.SerializeObject(s);
    
  6. データが JSON 形式にシリアル化されたので、データを保存する場所を指定する必要があります。 jsonpath という名前の文字列変数が使用されます。

    string jsonpath = "D:/jsondata/studentdata.json";
    
  7. if 条件を使用して、パスが正しいかどうかを確認します。 パスが既に存在する場合、コードは新しいパスを作成して既存のパスを上書きし、古いパスを破棄します。

    if (File.Exists(jsonpath)) {
      File.Delete(jsonpath);
      using (var st = new StreamWriter(jsonpath, true)) {
        st.WriteLine(SerializedJsonResult.ToString());
        st.Close();
      }
    }
    
  8. パスが利用できない場合、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"}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

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

関連記事 - Csharp File