######シリアライズして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を受け取ることが一応できました。