中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【C#.net】Newtonsoft.Jsonを使ってjsonファイルを扱う

1.概要

.netアプリケーションでjsonファイルを扱うことがあります。
そんな時に便利なのが【Newtonsoft.Json】になります。

Jsonとは
JavaScript Object Notationの略で、テキストベースのデータフォーマットになります。
名前にもあるとおり【Javascript】との親和性が高いものになっています。

2.インストールする

NuGetからインストールを行います。
【ツール】→【NuGetパッケージマネージャー】→【ソリューションのNuGetパッケージの管理】をクリックします。

f:id:tsu--kun:20190807165337p:plain


検索ボックスに【json】と入力し
【Newtonsoft.Json】を選択し、インストールします。

f:id:tsu--kun:20190807165348p:plain

3.シリアライズする

・・とはC#のオブジェクトをシリアライズしてJSON形式の文字列を得ることを言います。
以下テストコードになります。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json;

namespace jsonTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // シリアライズ処理
            var info = new test
            {
                Job = "プログラマー",
                Age = 37,
            };
            string json1 = JsonConvert.SerializeObject(info, Formatting.Indented);
            Console.WriteLine(json1);
        }
    }

    // シリアライズの対象となるクラスを宣言
    public class test
    {
        public string Job { get; set; }
        public int Age { get; set; }
    }
}


結果は下記のとおり

{
  "Job": "プログラマー",
  "Age": 37
}

4.デシリアライズする

・・とはシリアライズの逆でJson形式から元のデータに復元することを言います。
以下テストコードになります。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json;

namespace jsonTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // シリアライズ処理
            var info = new test
            {
                Job = "プログラマー",
                Age = 37,
            };
            string json1 = JsonConvert.SerializeObject(info, Formatting.Indented);
            // デシリアライズ処理
            test deserial1 = JsonConvert.DeserializeObject<test>(json1);
            Console.WriteLine(deserial1.Job);
            Console.WriteLine(deserial1.Age);
        }
    }

    // シリアライズの対象となるクラスを宣言
    public class test
    {
        public string Job { get; set; }
        public int Age { get; set; }
    }
}


結果は下記のとおり

プログラマー
37