C#
JSON

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

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