LoginSignup
3
5

More than 5 years have passed since last update.

C# DynamicJsonの使い方 (1)JSON→クラス (2)JSON→連想配列

Last updated at Posted at 2018-07-12

.INI ファイルを駆逐したい。

DynamicJson の入手方法。

Visual Studio 2017 を使うのが早い。

  1. [ツール(T)] - [NuGet パッケージ マネージャー(N)] - [ソリューションの NuGet パッケージマネージャー管理(N)...] - [参照] をクリックする。
  2. テキストボックスに「dynamicjson」と打鍵して [Enter]キーを押す。

あとは何とかしろ。

使い方。

ソースは GitHub に上げてあるが……。
https://github.com/muzudho/CsharpDynamicJsonBestPractice/tree/master/CsharpDynamicJsonBestPractice

using Codeplex.Data; // DynamicJson はこれ。
using CsharpDynamicJsonBestPractice.Model; // 自分で好きに作れだぜ。
using System.Diagnostics; // Trace とかこれ。
using System.IO; // ファイル読み込みはこれ。

とりあえず こんな感じで ファイルの冒頭で using しろだぜ。
そして。

var json = DynamicJson.Parse(File.ReadAllText("./CsDynamicJsonUsage-config.json"));

テキストファイルを読み込んで Parse すればいい。
あと もう1発。

// 連想配列以外の形は取れるはず。
ConfigModel config = json.Deserialize<ConfigModel>();

連想配列以外の部分は クラスに押し込んでくれる。

ただし、

### ok
public string name { get; set; }

### ignored
public string name;

JSON のキー名と プロパティ名を合わせろだぜ。プロパティーは get set のアクセッサーにしろだぜ。

詳しくはソースを見ろだぜ。

連想配列の読み取り方。

// 連想配列の形になっている dishMap は、Deserialize では取れない。DynamicJson型から直接取る。
foreach (string key in json.dishMap.GetDynamicMemberNames())
{
    Trace.WriteLine($"ENTRY {key} is {json.dishMap[key]}.");
}

Parse して取ったオブジェクトを ドット(.)アクセスしたり、インデクサー([])アクセスしたりして
連想配列になっているところは .GetDynamicMemberNames() でキーを取り出せだぜ。

あとはソースを見て考えろだぜ。

.INI ファイルより便利だろ。
.INI ファイルを駆逐したい。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5