【C#】Json.netを使う

前提

  • .net Framework 4.5.2
  • Json.netを使用
  • NuGet 2.12 以上
  • MITライセンスなので商用利用も可

NuGetからJson.netをダウンロード&インストール

[Nugetパッケージマネージャ]→[Nugetパッケージマネージャコンソール]を起動します。

プロントが返ってきたら以下のコマンドを入力します。バージョンは公式サイトを確認してお好みのバージョンを指定するとよろしいかと思います。

ちなみにNugetのバージョンが古いと実行ログに「NugetのバージョンはX.xx以上でやってね」とエラーが表示されますので、うまくいかない場合はログはよく確認してみましょう。

Install-Package Newtonsoft.Json -Version 10.0.3

実行ログ

各パッケージのライセンスは、パッケージの所有者によって提供されます。Microsoft は、サードパーティのパッケージに対して一切責任を負わず、いかなるライセンスも提供しません。パッケージには、追加のライセンスが適用される依存関係が含まれる場合があります。依存関係を確認するには、パッケージ ソース (フィード) URL を参照してください。

パッケージ マネージャー コンソール ホストのバージョン 3.0.0.0

利用可能なすべての NuGet コマンドを参照するには、'get-help NuGet' を入力します。

PM> Install-Package Newtonsoft.Json -Version 10.0.3  
'.NETFramework,Version=v4.5.2' を対象とするプロジェクト 'JsonReader' に関して、パッケージ 'Newtonsoft.Json.10.0.3' の依存関係情報の収集を試行しています
DependencyBehavior 'Lowest' でパッケージ 'Newtonsoft.Json.10.0.3' の依存関係の解決を試行しています
パッケージ 'Newtonsoft.Json.10.0.3' をインストールするアクションを解決しています
パッケージ 'Newtonsoft.Json.10.0.3' をインストールするアクションが解決されました
パッケージ 'Newtonsoft.Json.10.0.3' をフォルダー 'c:\users\shin\documents\visual studio 2015\Projects\JsonReader\packages' に追加しています
パッケージ 'Newtonsoft.Json.10.0.3' をフォルダー 'c:\users\shin\documents\visual studio 2015\Projects\JsonReader\packages' に追加しました
パッケージ 'Newtonsoft.Json.10.0.3' を 'packages.config' に追加しました
スクリプト ファイル 'c:\users\shin\documents\visual studio 2015\Projects\JsonReader\packages\Newtonsoft.Json.10.0.3\tools\install.ps1' を実行しています
'Newtonsoft.Json 10.0.3' が JsonReader に正常にインストールされました
PM>

実装

公式サイトにある実装を試してみます。

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;
using Newtonsoft.Json.Linq;

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

        public class Movie
        {
            public string Name { get; set; }
            public string ReleaseDate { get; set; }
            public string[] Genres { get; set; }

        }

        /// <summary>
        /// 読み取りボタン押下時
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            string json = @"{
              'Name': 'Bad Boys',
              'ReleaseDate': '1995-4-7T00:00:00',
              'Genres': [
                'Action',
                'Comedy'
              ]
            }";

            // インスタンスにデシリアライズ
            Movie m = JsonConvert.DeserializeObject<Movie>(json);

            System.Console.WriteLine(m.Name);
            System.Console.WriteLine(m.ReleaseDate);
            System.Console.WriteLine(m.Genres.ToString());


            //Jsonにシリアライズ
            string jsonStr = JsonConvert.SerializeObject(m);
            System.Console.WriteLine(jsonStr);

            // Linqで操作
            JArray array = new JArray();
            array.Add("Manual text");
            array.Add(new DateTime(2000, 5, 23));

            JObject o = new JObject();
            o["MyArray"] = array;

            string jsonStr2 = o.ToString();
            System.Console.WriteLine(jsonStr2);

        }

    }
}

 

実行結果

jsonStrの結果

{"Name":"Bad Boys","ReleaseDate":"1995-4-7T00:00:00","Genres":["Action","Comedy"]}

jsonStr2の結果

{
 "MyArray": [
 "Manual text",
 "2000-05-23T00:00:00"
 ]
}

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です