上回说到涉及多个实体的传参,用常规的方法已经不能解决了。这回我们用终极大招搞定她。

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[];
}

客户端:

        private void btnPost_Click(object sender, EventArgs e)
{
var woman = new
{
Name = "刘亦菲",
Age = ,
ExerciseTime = new List<DateTime>() {
DateTime.Now.Date.AddHours(),
DateTime.Now.Date.AddHours()
},
Son =new object[]{ new {//因为匿名类的原因,此处不能用List,只能用object数组
Name = "欧巴555",
Age = ,
EatTime = new List<DateTime>(){//此处是强类型,因此可以规范数据
DateTime.Now.Date.AddHours(),
DateTime.Now.Date.AddHours()
}
}},
};
var son = new {
Name = "楼菲子",
Age = ,
EatTime = new List<DateTime>(){//此处是强类型,因此可以规范数据
DateTime.Now.Date.AddHours(),
DateTime.Now.Date.AddHours()
} };
string postdata = JsonConvert.SerializeObject(new { woman=woman,son=son});
string url = "http://localhost:7601/api/values/GetData?name=楼主";
PostService.AsyncPostApiRequest(url, postdata, );
}

运行结果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年就知道了。差距啊,这位老兄写了不少文章,就是不知道江湖地位有多高。

WebApi传参总动员(五)的更多相关文章

  1. WebApi传参总动员(四)

    前文介绍了Form Data 形式传参,本文介绍json传参. WebApi及Model: public class ValuesController : ApiController { [HttpP ...

  2. WebApi传参总动员(一)

    目前自己的工作和WebApi相关,免不了传入.接收参数.以前的老办法是从请求流中获取json,再反序列化,这中间有2个不能控制的地方,一个是流,一个是反序列化,都需要try,总感觉非常的不爽.因此对W ...

  3. WebApi传参总动员(三)

    上篇介绍了如何从输入流中获取实体对象.本篇介绍以url形式传递参数.简单的参数不再赘述,这里主要实现形如(string name,Woman woman)这样的参数传递. 本篇及后面几章均涉及js调用 ...

  4. WebApi传参总动员(填坑)

    本以为系列文章已经Over,突然记起来前面留了个大坑还没填,真是自己给自己挖坑. 这个坑就是: (body 只能被读取一次)Only one thing can read the body MVC和W ...

  5. WebApi传参总动员(二)

    上篇,从最简单的string入手.本篇演示了从请求的输入流中获取实体.api: public class ValuesController : ApiController { [HttpPost] p ...

  6. C# WebApi传参之Post请求-AJAX

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.  学无止境,精益求精    上一节讲述了C# WebApi传参之Get请求 ...

  7. C# WebApi传参之Get请求-AJAX

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.  学无止境,精益求精    在介绍本篇博客之前,先来温故下AJax的请求, ...

  8. WebAPI传参

    1.GET请求传递参数 URL传参:http://localhost/ApiTest/test?id=1 API接收参数 [HttpGet] public string GetUser(int id) ...

  9. C#进阶系列——WebApi 传参详解

    本篇打算通过get.post.put.delete四种请求方式分别谈谈基础类型(包括int/string/datetime等).实体.数组等类型的参数如何传递. 回到顶部 一.get请求 对于取数据, ...

随机推荐

  1. ecshop利用.htaccess实现301重定向的方法

    实现方法如下(空间必须支持对目录中的.htaccess文件解析) 打开 .htaccess 找到 RewriteEngine on 它的下方添加 RewriteCond %{HTTP_HOST} ^需 ...

  2. iOS梦想之路-最新消息

    查看博客请转到 iCocos梦工厂 个人微信:18370997821 QQ:790806573 weibo:18370998721 谢谢:

  3. 7个惊艳的HTML5 Canvas动画效果及源码

    HTML5非常强大,尤其是现在大部分浏览器都支持HTML5和CSS3,用HTML5制作的动画也多了起来.另外,Canvas上绘制图形非常简单,本文就分享了一些强大的HTML5 Cnavas动画,一起来 ...

  4. git Please move or remove them before you can merge. 错误解决方案

    git pull 时 往往会遇到各种各样的问题 ,下面是常遇到的一种状况 Updating 7c9e086..936acacerror: The following untracked working ...

  5. 移动API-restful的设计原则和参考

    移动应用API设计10大技巧 http://jingyan.baidu.com/article/455a9950fd27ffa166277825.html RESTful API 设计指南 http: ...

  6. Why is processing a sorted array faster than an unsorted array?

    这是我在逛 Stack Overflow 时遇见的一个高分问题:Why is processing a sorted array faster than an unsorted array?,我觉得这 ...

  7. AjaxUploader使用

    一.简单上传(Simple Upload with Progress) <CuteWebUI:Uploader ID="ajaxUploader" runat="s ...

  8. Virgo Tomcat Server 指南-Hello World

    Eclipse发布了最新的Virgo Tomccat Server.VTS是一个应用服务器与OSGi紧密结合并且可以开发bundles形式的Spring web apps应用,他们同样拥有OSGi和S ...

  9. win7左ctrl和左alt键互换

    主要参考这篇文章: http://xyztony1985.blog.163.com/blog/static/3611782011752420104/ 感谢原博主 Windows Registry Ed ...

  10. MyBatis知多少(7)持久层

    持久层是适合使用MyBatis的地方.在面向对象的系统中,持久层主要关注对象(或者更精确地说应该是存储在那些对象中的数据)的存取.在企业应用程序中持久层通常用关系数据库系统来存储数据,虽然某些情况下其 ...