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[];
}
客户端:
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传参总动员(五)的更多相关文章
- WebApi传参总动员(四)
前文介绍了Form Data 形式传参,本文介绍json传参. WebApi及Model: public class ValuesController : ApiController { [HttpP ...
- WebApi传参总动员(一)
目前自己的工作和WebApi相关,免不了传入.接收参数.以前的老办法是从请求流中获取json,再反序列化,这中间有2个不能控制的地方,一个是流,一个是反序列化,都需要try,总感觉非常的不爽.因此对W ...
- WebApi传参总动员(三)
上篇介绍了如何从输入流中获取实体对象.本篇介绍以url形式传递参数.简单的参数不再赘述,这里主要实现形如(string name,Woman woman)这样的参数传递. 本篇及后面几章均涉及js调用 ...
- WebApi传参总动员(填坑)
本以为系列文章已经Over,突然记起来前面留了个大坑还没填,真是自己给自己挖坑. 这个坑就是: (body 只能被读取一次)Only one thing can read the body MVC和W ...
- WebApi传参总动员(二)
上篇,从最简单的string入手.本篇演示了从请求的输入流中获取实体.api: public class ValuesController : ApiController { [HttpPost] p ...
- C# WebApi传参之Post请求-AJAX
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷. 学无止境,精益求精 上一节讲述了C# WebApi传参之Get请求 ...
- C# WebApi传参之Get请求-AJAX
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷. 学无止境,精益求精 在介绍本篇博客之前,先来温故下AJax的请求, ...
- WebAPI传参
1.GET请求传递参数 URL传参:http://localhost/ApiTest/test?id=1 API接收参数 [HttpGet] public string GetUser(int id) ...
- C#进阶系列——WebApi 传参详解
本篇打算通过get.post.put.delete四种请求方式分别谈谈基础类型(包括int/string/datetime等).实体.数组等类型的参数如何传递. 回到顶部 一.get请求 对于取数据, ...
随机推荐
- Html5 localstorage解决Ajax回退的坑
A页面通过ajax加载数据,并且是滚动加载效果,当滚动几个屏幕之后,进入新的链接页面B,再返回到A的时候,A页面的数据有需要重新加载,从头开始了,体验非常不好. 解决办法:1)hash:2)html5 ...
- fast db 学习
见 http://code.google.com/p/mmdbsolution/source/browse/trunk/+mmdbsolution+--username+SiliangDu1987%4 ...
- SQL SERVER 服务启动后停止,某些服务由其它服务或程序使用时将自动停止
发生症状: 先是服务器挂掉,之后服务器可以登陆,但是实例却不能登陆进去(部分).出现的错误日志如下: :: R2 (SP2) - 10.50.4000.0 (X64) Jun :: Copyright ...
- TypeError: Cannot read property 'root' of null
解决办法: brew upgrade watchman
- JS实现移动端图片延迟加载
图片延迟加载常见的有,jquery.lazyload.js,原生JS实现的echo.js.但是都是必须给图片设置宽高. 因为项目是移动端,而且无法在加载前知道图片的宽高,所以,只好自己写了一个. 既然 ...
- ASP.NET MVC 获取当前访问域名
var request = filterContext.HttpContext.Request; string url = request.Url.Authority; string function ...
- Git回滚远程版本
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “房子是租的 但生活不是” 1.故事的开始 远程master分支下代码被不小心提交了很多垃圾代码 ...
- ODAC(V9.5.15) 学习笔记(十九)主键值自动生成
ODAC支持通过Oracle的序列来自动生成表的主键功能.这个过程允许在客户端自动完成,不需要过多代码.这个对一些要求自动增长字段做主键的场合非常有用.其实现步骤为: 1.数据库必须先建立生成主键的序 ...
- 如何让js不产生冲突,避免全局变量的泛滥,合理运用命名空间
为了避免变量之间的覆盖与冲突,可以生成命名空间,命名空间是一种特殊的前缀,在js中,通过{ }对象实现. 在不同的匿名函数中,根据功能声明一个不同的命名空间,每个匿名函数中GLOBAL对象的属性都不直 ...
- ruby AES加密解密
最近和京东合作做一个项目,在接口对接传递参数时,参数需要通过AES加密解密. 本来想到用gem 'aescrypt'处理,但是aescrypt的编码方式用的base64,而京东那边用的是16进制.所以 ...