今回のサンプル
GitHub に Visual Studio プロジェクトを上げてあります。
使うライブラリ
プロジェクトの References (参照) に「Json.NET」を追加する。
実際に References (参照) ツリー上に表示される名前は Newtonsoft.Json ってなるっぽい。
今回扱うモデル
とりえずシンプルなモデルで。
class Book { public int Id { get; set; } public string Name { get; set; } public string Asin { get; set; } }
C# オブジェクトを JSON テキストに変換
変換コード
using using System.Collections.Generic; using using Newtonsoft.Json; .... // 日本語ちゃんと出力されるようにしておく Console.OutputEncoding = new UTF8Encoding(); // せっかくだからリスト構造を作ってみる List<Book> books = new List<Book> { new Book{ Id = 1, Name = "野望の王国 1", Asin = "B00M84FTOS"}, new Book{ Id = 2, Name = "アカギ 1", Asin = "B00DVYTZ12"}, }; // 普通の JSON テキスト構築 Console.WriteLine("-------- normal json --------"); string jsonString = JsonConvert.SerializeObject(books); Console.WriteLine(jsonString); // インデント付きの JSON テキスト構築 Console.WriteLine("\n-------- formatted json --------"); string formattedJson = JsonConvert.SerializeObject(books, Formatting.Indented); Console.WriteLine(formattedJson);
変換結果
-------- normal json -------- [{"Id":1,"Name":"野望の王国 1","Asin":"B00M84FTOS"},{"Id":2,"Name":"アカギ 1","Asin":"B00DVYTZ12"}] -------- formatted json -------- [ { "Id": 1, "Name": "野望の王国 1", "Asin": "B00M84FTOS" }, { "Id": 2, "Name": "アカギ 1", "Asin": "B00DVYTZ12" } ]
デバッグ時などはインデント付いてるほうが見やすくて良い。
JSON テキスト を C# オブジェクトに変換
変換コード
using using System.Collections.Generic; using using Newtonsoft.Json; .... // 日本語ちゃんと出力されるようにしておく Console.OutputEncoding = new UTF8Encoding(); // JSON テキストのサンプル (書式はあえて適当に崩した) string jsonSample = @"[ { ""Id"": 10, ""Name"": ""フェルマーの最終定理"", ""Asin"": ""4102159711"" }, { ""Asin"": ""410215972X"", ""Name"" : ""暗号解読"", ""Id"": 20 } ]"; // JSON テキストから C# オブジェクトを構築 List<Book> booksByJson = JsonConvert.DeserializeObject<List<Book>>(jsonSample); // 結果確認用出力 Console.WriteLine("-------- parse json result --------"); booksByJson.ForEach((book) => { Console.WriteLine(book.Id + ", " + book.Name + ", " + book.Asin); });
変換結果
-------- parse json result -------- 10, フェルマーの最終定理, 4102159711 20, 暗号解読, 410215972X
謝辞
@qwerty2501さん、@xxIN0xxさん、Json.NET の情報ありがとうございました!
宣伝
唐突ですがサンプルJSONに書いた「暗号解読」が糞おもしろいのでお勧めしておきます。(というかサイモン・シンの本はすべてガチでおもしろい)(今回のテーマにはまったく関係ない)

- 作者: サイモンシン,Simon Singh,青木薫
- 出版社/メーカー: 新潮社
- 発売日: 2007/06/28
- メディア: 文庫
- 購入: 30人 クリック: 216回
- この商品を含むブログ (233件) を見る