package util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; /***
*
* @author YangChaoJie
*
*/
public class ReqUtil {
/***
* 将请求对象传入,进行对象转Map,排序,进行MD5加密;
*
* @param req
* @return
*/
private static StringBuilder stringBuilder; private static String currTime; /***
* hashCode加密字符串
*
* @return
*/
public static LinkedHashMap<String, Object> ParameToMap(Object reqData) {
stringBuilder = new StringBuilder();
stringBuilder.append("he3yun.com-");
@SuppressWarnings("unchecked")
LinkedHashMap<String, Object> map = ZJ_BeanToMapUtils.toMap(reqData);
List<Map.Entry<String, Object>> list = new ArrayList<Map.Entry<String, Object>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Object>>() {
public int compare(Entry<String, Object> o1, Entry<String, Object> o2) {
return String.valueOf(o1.getValue()).toLowerCase()
.compareTo(String.valueOf(o2.getValue()).toLowerCase());
}
});
return CheckData(reqData, list);
} /***
* 根据不同的构造方法参数生成对应Map对象,进行加密
*
* @param reqData
* @param list
* @return
*/
private static LinkedHashMap<String, Object> CheckData(Object reqData, List<Map.Entry<String, Object>> list) {
LinkedHashMap<String, Object> dataMap = new LinkedHashMap<String, Object>(); return traverseEntryToMap(reqData, dataMap, list);
} /***
* 提高复用写的方法
*
* @param dataMap
* @param list
* @return
*/ private static LinkedHashMap<String, Object> traverseEntryToMap(Object reqData,
LinkedHashMap<String, Object> dataMap, List<Map.Entry<String, Object>> list) {
for (Entry<String, Object> mapping : list) {
if (mapping.getValue() != null) {
stringBuilder.append(String.valueOf(mapping.getValue()) + "-");
dataMap.put(mapping.getKey(), mapping.getValue());
}
}
getCurrTime();
stringBuilder.append(currTime); dataMap.put("hashCode", MD5Util.stringToMD5(String.valueOf(stringBuilder)));
dataMap.put("timestamp", currTime); return dataMap;
} public static void getCurrTime() {
currTime = String.valueOf(new Date().getTime());
} /**
* MAP排序
* @param map
*/
public static LinkedHashMap<String, Object> sortMap(LinkedHashMap<String, Object> map) {
List<Map.Entry<String, Object>> list = new ArrayList<Map.Entry<String, Object>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Object>>() {
public int compare(Entry<String, Object> o1, Entry<String, Object> o2) {
return String.valueOf(o1.getValue()).toLowerCase()
.compareTo(String.valueOf(o2.getValue()).toLowerCase());
}
});
return map;
} }

反射对象生成没有null的map:

public static <K, V> LinkedHashMap<K, V> toMap(Object javaBean) {
LinkedHashMap<K, V> ret = new LinkedHashMap<K, V>();
try {
Method[] methods = javaBean.getClass().getDeclaredMethods();
for (Method method : methods) {
if (method.getName().startsWith("get")) {
String field = method.getName();
field = field.substring(field.indexOf("get") + 3);
field = field.toLowerCase().charAt(0) + field.substring(1);
Object value = method.invoke(javaBean, (Object[]) null);
ret.put((K) field, (V) (null == value ? null : value));
}
}
} catch (Exception e) {
}
return ret;
}

最新文章

  1. 6-3 bash脚本编程之五 字符串测试及for循环
  2. Makefile笔记之一 ------ 变量的引用及赋值
  3. 进阶系列一【绝对干货】---SQL语句执行效率优化
  4. ThinkPHP 自动验证相关注意
  5. android开源项目总汇
  6. Altium Designer学习: 原理图和PCB元件对应查找
  7. c# 哈希表集合;函数
  8. oracle暂时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段
  9. Effective Java2读书笔记-创建和销毁对象(一)
  10. UVA 489-- Hangman Judge(暴力串处理)
  11. Office 2010 SP2简体中文正式版下载
  12. js框架封装,模拟jQuery封装
  13. [bzoj4821][Sdoi2017]相关分析
  14. MySQL存储过程入门
  15. 通过LVM给Linux扩容
  16. 性能测试三:jmeter进阶之图形插件
  17. [IR] XPath for Search Query
  18. 关于elment-ui树形控件Tree的使用
  19. 读取Excel列,转换为String输出(Java实现)
  20. DataStage 九、数据交换到MySQL以及乱码问题

热门文章

  1. &lt;h2&gt;js数组操作大全(pop,push,unshift,splice,shift方法)&lt;/h2&gt;
  2. json数据转为对象,一般在前台把数据传回后端中使用 转https://www.cnblogs.com/zxtceq/p/6610214.html
  3. 微信小程序map组件z-index的层级问题
  4. C++ 洛谷 P1273 有线电视网 题解
  5. ZOJ 3953:Intervals(优先队列+思维)
  6. Gym 101257G:24(尺取)
  7. 截图编辑器 PicPick Biz v4.1.6/v5.0.3 Lite 绿色便携版
  8. 1. 全文搜索框架 Haystack
  9. SQL Server 函数的定义及使用
  10. CDQZ集训DAY9 日记