読者です 読者をやめる 読者になる 読者になる

Great just isn't good enough.

毎日が楽しいなんて、毎日楽しくないのと同じ

C#でjsonを扱う

次の職場で使用するので、C#の勉強を始めました。

5年ぶりのC#だし、5年前も1ヶ月しか触れてないので、個人的に勉強の記録として残していきます。

 

jsonをC#で扱いたい

WebAPIからのレスポンスがjson形式でそれを扱って色々したい時に

どうすれば良いかわからないので困った。

ちなみに、APIからのデータ形式は決まっています。

 

apiメソッド名:getinfo

データ形式

{
	"success":1,
	"res":{
		"A":{
			"a":11111,
			"b":22222,
                        "c":33333
		},
		"B":{
			"a":11111,
			"b":22222
		},
		"c":44444,
		"d":55555,
		"e":66666
	}
}

このようなレスポンスがある場合に、モデルクラスを作成してそれに合わせて

jsonをデシリアライズさせます。

モデルクラスの作成には、以下のサイトを利用すると楽にできます。

 

json2csharp.com

 

実際に上記のサイトを利用して作成したモデルクラスが以下になります。

 

public class A
{
public int a { get; set; }
public int b { get; set; }
public int c { get; set; }
}

public class B
{
public int a { get; set; }
public int b { get; set; }
}

public class Res
{
public A A { get; set; }
public B B { get; set; }
public int c { get; set; }
public int d { get; set; }
public int e { get; set; }
}

public class RootObject
{
public int success { get; set; }
public Res res { get; set; }
}

 

このまま別なファイルに切り出したらなんか、気持ち悪いので、apiメソッド名

を借りて以下のように整形しました。

RootObjectクラスの名前をGetInfoに変えて、内部クラスにそれ以外を定義。

 

public class GetInfo
{
public class A
{
public int a { get; set; }
public int b { get; set; }
public int c { get; set; }
}

public class B
{
public int a { get; set; }
public int b { get; set; }
}

public class Res
{
public A A { get; set; }
public B B { get; set; }
public int c { get; set; }
public int d { get; set; }
public int e { get; set; }
}

public int success { get; set; }
public Res res { get; set; }
}

 

これで準備完了。

あとは、取得したjson形式のレスポンスに対して、

 

JsonConvert.DeserializeObject<GetInfo>(json);

 

してあげれば、C#で扱えるオブジェクト形式になります。

 

他にもjsonを取り扱う方法は様々あるのでチェックしようと思います。

 

Donate with IndieSquare

お小遣い頂けるとクソつまんないブログを更新する燃料になります。

頂いた方には、なんの価値もないNEKOKOコインを差し上げます。

広告を非表示にする
日本で一番簡単にビットコインが買える取引所 coincheck bitcoin