-------------------2021-04-26追加---JSONObject的妙用(通过TypeReference定义任意转化)-------------- Map<String, Object> jsonMap = JSONObject.parseObject(paramStr); Map<String, String> busiDataMap = JSONObject.parseObject(JSONObject.toJSONString(jsonMap.get("busiData")),new TypeReference<Map<String,String>>(){});
---------2019.2.26追加--------------将结果转化为需要的对象对其进行处理 + String或JSON转实体-----------------------------
//将结果转化为需要的对象对其进行处理
private Result<Object> rsValue2Bean(String strRsValue) {
/* --------------多结果集----------- */
//用JSONObject暂存结果集
Result<Object> result = Result.createSuccessResult();
List<JSONObject> payInfos = JSONObject.parseObject(strRsValue, List.class);
//最终需要的结果集
List<PayInfo> payInfosRes = Lists.newArrayList();
//遍历处理暂存结果集
for (JSONObject json : payInfos) {
//将JSONObject对象转化为需要的PayInfo对象
PayInfo payInfo = JSONObject.parseObject(JSONObject.toJSONString(json), PayInfo.class);
//...对payInfo对象进行一系列处理...
//将需要的对象添加到最终结果集合
payInfosRes.add(payInfo);
}
result.setData(payInfosRes);
/* --------------单个结果---------- */
JSONObject json = JSONObject.parseObject(strRsValue, JSONObject.class);
PayInfo payInfo = JSONObject.parseObject(JSONObject.toJSONString(json), PayInfo.class);
result.setData(payInfo);
return result;
}
---------------------------2019.1.29追加--------------json去转义 + JSONObject转实体-----------------------------
public class Test {
public static void main(String[] args) {
String s="[{\"tradeMode\":\"MIC\",\"accountNo\":null,\"cash\":\"1200\",\"posTransNo\":null,\"bankTransNo\":null,\"bankDate\":\"20190129\",\"bankTime\":\"120447\",\"bankSettlementTime\":null,\"bankCardNo\":\"A37318138\",\"posIndexNo\":null,\"sellerAccountNo\":null,\"transNo\":\"1135862251\",\"payAccountNo\":null,\"outTradeNo\":null,\"extend\":null}]";
//去除json转义
String tradeModeList= StringEscapeUtils.unescapeJava(s);
List<JSONObject> payInfos = JSONObject.parseObject(tradeModeList,List.class);
//JSONObject->实体
JSONObject payInfoJson = payInfos.get(0);
PayInfo payInfo = JSON.parseObject(JSONObject.toJSONString(payInfoJson), PayInfo.class);
System.out.println(payInfo);
}
}
---------------------------2018.10.25追加---------------BeanInfo与FastJson效率比较: BeanInfo效率高----------------------------
因见评论区网友提问使用BeanInfo与FastJson进行Map与Bean间转换的效率问题, 故作以测试!
结论如下:
使用2018.4.18追加的BeanInfo方式进行转换效率高出FastJson很多倍.
(实测数据:使用BeanInfo与FastJson做相同的转化, BeanInfo方式需要时间20ms左右,而使用FastJson方式需要时间280ms左右)
---------------------------2018.4.18追加-------------------------------------------
Map与实体Bean之间互转工具类:
Java Code
1 | package com.*; |
---------------------------2018.4.12追加-------------------------------------------
[推荐使用该法]
总结: 利用fastjson进行简单处理.即可实现Map与Bean之间的转换.
说明: dataMap---Map集合
RegistrationScheduleResultBO---实体类
Map->Bean 的实现:
String jsonRegistrationScheduleResultBO = JSONObject.toJSONString(dataMap);
RegistrationScheduleResultBO registrationScheduleResultBO = JSONObject.parseObject(jsonRegistrationScheduleResultBO, RegistrationScheduleResultBO.class);
---------------------------2018.4.12之前-------------------------------------------
利用BeanMap进行对象与Map的相互转换
参原文:点击打开链接
javabean与map的转换有很多种方式,比如:
1、通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换10000个bean,就需要12秒!!!不推荐使用
2、通过java反射,获取bean类的属性和值,再转换到map对应的键值对中,这种方法次之,但稍微有点麻烦
3、通过net.sf.cglib.beans.BeanMap类中的方法,这种方式效率极高,它跟第二种方式的区别就是因为使用了缓存,初次创建bean时需要初始化,之后就使用缓存,所以速度极快,经测试,循环bean和map的转换10000次,仅需要300毫秒左右。
所以,推荐第3种方式。 以下是相关代码:
[java] view plain copy
- /**
- * 将对象装换为map
- * @param bean
- * @return
- */
- public static <T> Map<String, Object> beanToMap(T bean) {
- Map<String, Object> map = Maps.newHashMap();
- if (bean != null) {
- BeanMap beanMap = BeanMap.create(bean);
- for (Object key : beanMap.keySet()) {
- map.put(key+"", beanMap.get(key));
- }
- }
- return map;
- }
- /**
- * 将map装换为javabean对象
- * @param map
- * @param bean
- * @return
- */
- public static <T> T mapToBean(Map<String, Object> map,T bean) {
- BeanMap beanMap = BeanMap.create(bean);
- beanMap.putAll(map);
- return bean;
- }
- /**
- * 将List<T>转换为List<Map<String, Object>>
- * @param objList
- * @return
- * @throws JsonGenerationException
- * @throws JsonMappingException
- * @throws IOException
- */
- public static <T> List<Map<String, Object>> objectsToMaps(List<T> objList) {
- List<Map<String, Object>> list = Lists.newArrayList();
- if (objList != null && objList.size() > 0) {
- Map<String, Object> map = null;
- T bean = null;
- for (int i = 0,size = objList.size(); i < size; i++) {
- bean = objList.get(i);
- map = beanToMap(bean);
- list.add(map);
- }
- }
- return list;
- }
- /**
- * 将List<Map<String,Object>>转换为List<T>
- * @param maps
- * @param clazz
- * @return
- * @throws InstantiationException
- * @throws IllegalAccessException
- */
- public static <T> List<T> mapsToObjects(List<Map<String, Object>> maps,Class<T> clazz) throws InstantiationException, IllegalAccessException {
- List<T> list = Lists.newArrayList();
- if (maps != null && maps.size() > 0) {
- Map<String, Object> map = null;
- T bean = null;
- for (int i = 0,size = maps.size(); i < size; i++) {
- map = maps.get(i);
- bean = clazz.newInstance();
- mapToBean(map, bean);
- list.add(bean);
- }
- }
- return list;
- }