[C#] Newtonsoft.JSONライブラリを利用してJsonデータ構造を扱う方法


Devlopment note / C#    作成日付 : 2020/04/23 20:19:53   修正日付 : 2020/04/23 20:19:53

こんにちは。明月です。


この投稿はC#でNewtonsoft.JSONライブラリを利用してJsonデータ構造を扱う方法に関する説明です。


まず、Jsonに関して説明しますとJsonとは(キー,値)構造で人が認識できる開放型標準データフォーマットです。


私が10年前に開発する時にはXMLの構造でデータを扱うことが多くありましたが、最近はほとんどJsonタイプのデータを扱うプログラムが多いです。

でもXMLを使わないことではないけれども、XMLより直観的な構造だし、データ修正がXMLよりしやすいからだと思います。(XMLはタグの開き、閉めが間違っても全体エラーが発生します。)


そのため、プログラムライブラリでJsonを読み取るか書き込むのライブラリが多いですが、Newtonsoft.JSONがたくさん使うし、一番機能が多いので紹介します。


まず、NugetでNewtonsoft.JSONライブラリを連携しましょう。



using System;
//네임스페이스 선언
using Newtonsoft.Json;
 namespace NewtonsoftExample
{
  // Jsonタイプに変換するクラス
  class JsonExample
  {
    public int Data1 { get; set; }
    public String Data2 { get; set; }
  }
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      //Jsonタイプのデータ
      var json = "{ 'Data1': 1, 'Data2':'TEST' }";
      //JsonタイプのStringデータをJsonExmpleクラスに変換
      var data = JsonConvert.DeserializeObject<JsonExample>(json);      
      // JsonExmpleクラスのData1の値をコンソールに出力
      Console.WriteLine("Data1 - " + data.Data1);
      // JsonExmpleクラスのData2の値をコンソールに出力
      Console.WriteLine("Data2 - " + data.Data2);
      
      // データを再設定
      data.Data1 = 10;
      data.Data2 = "Hello world";
    
      // JsonExampleクラスをJSONタイプに変換(結果はStringタイプ)
      json = JsonConvert.SerializeObject(data);
      // コンソール出力
      Console.WriteLine("JSON - " + json);
 
      Console.WriteLine("Press Any Key...");
      Console.ReadKey();
    }
  }
}


結果をみれば、StringタイプのJSONデータがクラスに変換されたし、クラスのデータがStringタイプのJSONデータに変換することを確認できます。


注意点はJsonタイプでシングルクォートはStringでないことは定数に表記されます。

なのでJsonとクラスのデータタイプが合わない場合にはエラーが発生します。


後、上のことはプロパティ名とJsonのキーを一致しましたが、仕様によって一致できない場合もあります。

その場合はJsonPropertyアトリビュートを利用して設定が可能です。

using System;
//네임스페이스 선언
using Newtonsoft.Json;
namespace NewtonsoftExample
{
  // Jsonタイプに変換するクラス
  class JsonExample
  {
    // キーがaのデータを入力する。
    [JsonProperty("a")]
    public int Data1 { get; set; }
    // キーがbのデータを入力する。
    [JsonProperty("b")]
    public String Data2 { get; set; }
  }
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      //Jsonタイプのデータ
      var json = "{ 'a': 1, 'b':'TEST' }";
      //JsonタイプのStringデータをJsonExmpleクラスに変換
      var data = JsonConvert.DeserializeObject<JsonExample>(json);
      // JsonExmpleクラスのData1の値をコンソールに出力
      Console.WriteLine("a - " + data.Data1);
      // JsonExmpleクラスのData2の値をコンソールに出力
      Console.WriteLine("b - " + data.Data2);

      Console.WriteLine();
      // データを再設定
      data.Data1 = 10;
      data.Data2 = "Hello world";

      // JsonExampleクラスをJSONタイプに変換(結果はStringタイプ)
      json = JsonConvert.SerializeObject(data);
      // コンソール出力
      Console.WriteLine("JSON - " + json);

      Console.WriteLine("Press Any Key...");
      Console.ReadKey();
    }
  }
}


Newtonsoft.JSONのライブラリは様々な機能がありますが、私の基準では上の以外には使わないです。


ここまでC#でNewtonsoft.JSONライブラリを利用してJsonデータ構造を扱う方法に関する説明でした。


ご不明なところや間違いところがあればコメントしてください。

最新投稿