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请求 对于取数据, ...
随机推荐
- Android 5.0 Uicc框架分析
已同步更新至个人blog: dxjia.cn Uicc框架 UICC框架是Android在4.1引入的,使的对卡的管理控制更加清晰.要了解这个UICC框架,需要从UiccController开始, ...
- HL AsySocket 服务开发框架 - 业务逻辑层
一 概述 Socket服务只是提供一个网络传输服务. 业务逻辑层在整体架构中的位置在那里呢,如图: 网络层将解包后的消息包抛至业务逻辑层,业务逻辑层收到消息包后,解析消息类型,然后转入相应的处理流程处 ...
- lua中常量的实现及表的深拷贝实现
废话:好久没在这里写博客了...主要原因是我买了个域名hanxi.info并在github上搭建了个人博客... lua中默认是没有c中的const常量的,在csdn上找到了一个使用setmetata ...
- 如何修改 EM12c 中 SYSMAN 用户的密码?
以下内容全部转自:http://www.chenjunlu.com/2013/04/how-to-modify-the-password-for-sysman-of-em-12c-cloud-cont ...
- 301 redirect Domain Name using global.asax
void Application_BeginRequest(object sender, EventArgs e) { if (HttpContext.Current.Request.Url.ToSt ...
- 允许CEF跨域访问iframe
默认情况下,如果嵌入本地Web页面,并在页面内部使用iframe来显示一个在线页面,加载的过程中会触发一个未捕获异常,虚函数CefV8ContextHandler::OnUncaughtExcepti ...
- CSS3 页面跳转的动画效果
从左侧弹出: var windowWidth = window.innerWidth; $(atlas_list).css({ "transition":"none&qu ...
- CenOS6.3 ssh 公钥认证报错:Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
转载自 http://laowafang.blog.51cto.com/251518/1364298 1.说明: ssh无密码用户远程登录,一直以来使用是debian操作系统,对用户目录权限要求没有关 ...
- Unity 全面理解加载和内存管理
最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBundle,其实两者本质上我理解没有什么区别.Resources ...
- ruby -- 问题解决(一)无法连接mysql数据库
>rails g controller home index 运行该命令时无法连接mysql 先下载配置文件:mysql-connector-c-noinstall-6.0.2-win32. ...