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];
        }
View Code

客户端:

        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);
        }
View Code

运行结果1:

运行结果2:

木哈哈,yy成功了。

本系列文章参考:

http://www.cnblogs.com/CreateMyself/p/4874273.html 感谢Recluse_Xpy

http://www.cnblogs.com/xcjit/p/4346758.html 感谢侠羽风云

http://www.cnblogs.com/liek/p/4888201.html 感谢掌舵今生

http://www.cnblogs.com/babycool/p/3922738.html 感谢酷小孩 

http://blogs.msdn.com/b/henrikn/archive/2012/05/03/asp-net-web-api-updates-may-3.aspx

http://weblog.west-wind.com/posts/2012/Aug/30/Using-JSONNET-for-dynamic-JSON-parsing 感谢Rick Strahl。人家2012年就知道了。差距啊,这位老兄写了不少文章,就是不知道江湖地位有多高。

原文地址:https://www.cnblogs.com/luhuanong/p/4930434.html