C#には標準でJSONデータを読み書きするクラスが用意されています。このクラスを利用することでJSONデータをC#のクラスにマッピングすることができます。.NET4.0以降での対応のような気がしますので、プロジェクトの対象プラットフォームを確認しておきましょう(そうしないとライブラリを見つけることができませんので)。あとは以下のとおりです。
前準備
- プロジェクトのプロパティにて対象プラットフォームが「.NET4.0Framework」となっているのを確認
- 参照設定(.NET)にて、System.Runtime.Serialization を追加
データクラスの作成まず、jsonのデータを格納するためのデータクラスが必要です。今回は先日記事にしたgoo.glの短縮URLサービスが返すJSONを受け取るようにします。下記のようにデータコンストラクトを記述する所がポイントです。漏れのないように書いてください。
- [DataContract]
- public class UrlInfo
- {
- [DataMember(Name = "kind")]
- public string Kind { get; set; }
- [DataMember(Name = "id")]
- public string ShortUrl { get; set; }
- [DataMember(Name = "longUrl")]
- public string LongUrl { get; set; }
- }
[DataContract]
public class UrlInfo
{
[DataMember(Name = "kind")]
public string Kind { get; set; }
[DataMember(Name = "id")]
public string ShortUrl { get; set; }
[DataMember(Name = "longUrl")]
public string LongUrl { get; set; }
}
C#コード
関連するライブラリをインポート(using)するのは忘れないようにしてください。var宣言のところは実際のクラス宣言に置き換えてもいいかもしれません(未確認)。
- using System.Runtime.Serialization;
- using System.Runtime.Serialization.Json;
-
- var serializer = new DataContractJsonSerializer(typeof(UrlInfo));
- var jsonBytes = Encoding.Unicode.GetBytes(surl);
- var ms = new MemoryStream(jsonBytes);
- var gURL = (UrlInfo)serializer.ReadObject(ms);
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
var serializer = new DataContractJsonSerializer(typeof(UrlInfo));
var jsonBytes = Encoding.Unicode.GetBytes(surl);
var ms = new MemoryStream(jsonBytes);
var gURL = (UrlInfo)serializer.ReadObject(ms);
以上で、gURLにはjsonのデータが対応する各プロパティに入っていますので、gURL.ShortUrl等で呼び出すことができます。
0 件のコメント:
コメントを投稿