C# 初试ashx接口开发(时间处理,json处理)
来源:互联网 发布:阿里云 个人备案 编辑:程序博客网 时间:2024/06/02 00:12
以下链接有很大的启示
http://www.cnblogs.com/zfanlong1314/p/3501043.html
需求:
根据传参(参数验证)从给定的接口中获取数据(time参数),返回json格式数据 {"Data":[{"ID": xxx, "name":"pppp",
"rows":[{"2017-04-04 00:00:00":"nnn"},{"2017-04-04 01:00:00":"nnn"},{"2017-04-04 02:00:00":"nnn"}]
},
{"ID": xxxx, "name":"pppp",
"rows":[{"2017-04-04 00:00:00":"nnn"},{"2017-04-05 00:00:00":"nnn"},{"2017-04-06 00:00:00":"nnn"}]
}]}
简述步骤:
1.建立一般程序文件ashx;
1.继承于IHttpHandler;
2.自动生成的ProcessRequest(HttpContext context)方法,是入口方法;
3.context.Response.Write()方法用于输出数据,效果是会在页面上直接显示。
2.从接口中获取数据的思路;–从结果溯源
1.寻找”关键方法”;
2.从”关键方法”中获取关键的输入参数组成,如果组成是个易得到的现成方法就简单;如果不是就继续寻找:发现有参数来自整个方法体的形参,于是去寻找引用;
3.在引用中发现sql语句,由于不方便在引用项目中进行调试,于是将关键代码转移到现有项目中进行调试;
4.一步步溯源找到最原始的输入。
【或许有更好的方法论】
3.C# 关于时间的处理;
·关于计算时间差(C# TimeSpan 计算时间差(时间间隔))–注意:timespan.Hours统计的时间只会在24小时以内,而timespan.TotalHours单纯统计小时数。
http://www.cnblogs.com/qinpengming/p/3265579.html
/// <summary> /// 将时间分割成每个时间段,组合成timeList /// </summary> /// <param name="endTime"></param> /// <returns></returns> private List<string> splitTime(DateTime endTime) { //input: 全局变量--1.split-间隔频率;2.range-总范围 List<string> timeList = new List<string>(); int rangeDayt = int.Parse(range); int splitHourst = int.Parse(split); DateTime beginTime = DateTime.Now.AddDays(-rangeDayt); TimeSpan timeSpan = endTime.Subtract(beginTime).Duration(); int d_hours = (int)Math.Floor(timeSpan.TotalHours);//获取小时差 timeList.Add(beginTime.ToString("yyyy-MM-dd HH:mm:ss")); for (int i = splitHourst; i < d_hours; i = i + splitHourst) { beginTime = beginTime.AddHours(splitHourst); timeList.Add(beginTime.ToString("yyyy-MM-dd HH:mm:ss")); } timeList.Add(endTime.ToString("yyyy-MM-dd HH:mm:ss")); return timeList; }
·关于比较时间大小–转化成DateTime进行比较
http://www.cnblogs.com/jiangnini/archive/2013/11/26/3444001.html
#region 用tList来判断数据的时间范围 int[] recordNum = new int[tList.Count - 1];//根据时间节点定义计数器--这句话没什么意义 //初始化时间节点 for (int i = 0; i < recordNum.Length; i++) { data.rows.Add(tList[i], 0); } foreach (row r in sourceData.rows)//对其中一篇文章进行判断 { DateTime tempDt = Convert.ToDateTime(r.updatetime);//转化为Datetime,再进行比较 string timeRecord = ""; #region 定义rows的时间 if (tempDt < Convert.ToDateTime(tList[0])) { continue ; } for (int i = 0; i < tList.Count; i++) { DateTime cdt = Convert.ToDateTime(tList[i]); if (i == 0) { timeRecord = tList[i]; } if (tempDt > cdt) { timeRecord = tList[i]; } else { break; } } #endregion if (data.rows[timeRecord] != null)//如果存在已经定义的时间节点//关于如何从Dictionary中根据key获取value的数值 { data.rows[timeRecord]++; } } #endregion
4.关于json数据的读取和形成;
参考这篇文章:
http://bbs.csdn.net/topics/390520967
于是:
1.引用Newtonsoft.Json.dll(这个有个很棒的优点:可以只获取可以解析的部分,这样可以屏蔽不需要的信息);
2.构建实体类;可以实现key-value的读取 & 从model-class到json数据的转换;
SourceData sourceData = Newtonsoft.Json.JsonConvert.DeserializeObject<SourceData>(str);//从json格式转化成实体类; resultJson = Newtonsoft.Json.JsonConvert.SerializeObject(resultData);//从实体类转化成json格式;
5.最后的URL访问:
http://localhost:9886/该ashx上级文件夹名称/一般应用程序名称.ashx?传参
- C# 初试ashx接口开发(时间处理,json处理)
- C#创建使用一般处理程序.ashx
- C# ashx一般处理程序Header设置
- 处理json时间格式
- jQuery获取一般处理程序(ashx)的JSON数据
- C#处理Json文件
- C#处理Json文件
- C#处理Json文件
- C#处理JSON
- c# json 处理
- C#处理Json文件
- C# json处理
- C#处理Json数据
- C#处理Json文件
- C# DataContractJsonSerializer 处理Json
- C#处理Json文件
- C# 处理JSON
- c#处理json
- 迭代器
- 链地址法和线性探测法求查找成功与不成功的平均查找长度ASL
- Kaldi决策树状态绑定学习笔记(四)
- 谈谈我对云计算的认识之基本概念(一)
- 每次重新部署后hibernate会把数据库里表都drop掉,数据丢失
- C# 初试ashx接口开发(时间处理,json处理)
- J2EE:servlet request常用方法总结
- Maven-Jetty的插件集成快速启动
- 手把手教你逆向分析 Android 程序
- python 小计算
- poj 3406 组合数的最后非0数
- Whoops, looks like something went wrong. 1/1 InvalidArgumentException in FileViewFinder.php line 13
- 时间复杂度分析及其案例
- Delphi VCL GIF 动画