WebApi传参总动员(五)
上回说到涉及多个实体的传参,用常规的方法已经不能解决了。这回我们用终极大招搞定她。
WebApi:注意要引用JSON.Net
[HttpPost] public string GetData(string name,JObject obj) { dynamic json = obj; //获得动态对象 JObject womanJson = json.woman; //获取动态对象中子对象 JObject sonJson = json.son; var woman = womanJson.ToObject<Woman>(); //将其转换为强类型对象 var son = sonJson.ToObject<Son>(); //将其转换为强类型对象 return "我是" + name + ",我喜欢" + woman.Name+"我们有一个共同的孩子叫:"+son.Name+"每天第一次吃奶的时间:"+son.EatTime[0]; }
客户端:
private void btnPost_Click(object sender, EventArgs e) { var woman = new { Name = "刘亦菲", Age = 18, ExerciseTime = new List<DateTime>() { DateTime.Now.Date.AddHours(13), DateTime.Now.Date.AddHours(20) }, Son =new object[]{ new {//因为匿名类的原因,此处不能用List,只能用object数组 Name = "欧巴555", Age = 1, EatTime = new List<DateTime>(){//此处是强类型,因此可以规范数据 DateTime.Now.Date.AddHours(9), DateTime.Now.Date.AddHours(19) } }}, }; var son = new { Name = "楼菲子", Age = 1, EatTime = new List<DateTime>(){//此处是强类型,因此可以规范数据 DateTime.Now.Date.AddHours(7), DateTime.Now.Date.AddHours(19) } }; string postdata = JsonConvert.SerializeObject(new { woman=woman,son=son}); string url = "http://localhost:7601/api/values/GetData?name=楼主"; PostService.AsyncPostApiRequest(url, postdata, 20); }