LoginSignup
7
7

More than 5 years have passed since last update.

ASP.NET WebAPI GET通信でJSONを受け取る方法(WebAPI側で)

Last updated at Posted at 2017-12-11
シリアライズしてUrlエンコしてクエリパラメーターに渡しているだけです。
もっといい方法がありそうですが、一応できたのでメモします。

クライアント側の実装

Jsonで送信するデータを定義
public class Person
{
  public string Name {get;set;}
  public int age {get;set;}
  public List<Car> Cars {get;set;}
}

public class Car
{
  public string Name {get;set;}
  public string Maker {get;set;}
  public string Money {get;set;}
}
JSONをシリアライズ→Urlエンコ→クエリに設定→APIにリクエスト
/*送信するデータを生成*/
var person = new Person(){
    Name = "山田太郎",
    age = 20,
    Cars = new List<Car>()
    {
        new Car()
        {
            Name = "テストA車",
            Maker = "A社",
            Money = 1000000
        },
        new Car()
        {
            Name = "テストB車",
            Maker = "B社",
            Money = 500000
        }
    }
}

/*送信するデータをシリアライズ ※JSON.NETを使用*/
var json = JsonConvert.SerializeObject(person);

/*Urlエンコード*/
var QueryEnc = HttpUtility.UrlEncode(json);

/*クエリパラメーターにJSONを設定してAPIにリクエスト*/
var url = "http://localhost:xxxxx/api/values"
using(var httpClient = new HttpClient()){
  await httpClient.GetAsync(url + "?json=" + QueryEnc);
}

WebApi側の実装

Jsonで受け取るデータを定義 ※クライアント側で実装したものと同じ

public class Person
{
  public string Name {get;set;}
  public int age {get;set;}
  public List<Car>Cars {get;set;}
}

public class Car
{
  public string Name {get;set;}
  public string Maker {get;set;}
  public string Money {get;set;}
}
JSONでデータを受け取る
public string Get(string json)
{
  /*Urlデコード*/
    var jsonDcode = HttpUtility.UrlDecode(json);

    /*デシリアライズ*/
  var person = JsonConvert.DeserializeObject<Person>(jsonDecode);
}
  
  return "成功";

これでJSONを受け取ることが一応できました。

7
7
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
7
7