java中对象和Map的相互转换

  1. 1、实体对象转map集合
  2. private static Map<String, String> obj2Map(Object obj) {  
  3.   
  4.         Map<String, String> map = new HashMap<String, String>();  
  5.         // System.out.println(obj.getClass());  
  6.         // 获取f对象对应类中的所有属性域  
  7.         Field[] fields = obj.getClass().getDeclaredFields();  
  8.         for (int i = 0, len = fields.length; i < len; i++) {  
  9.             String varName = fields[i].getName();  
  10.             varName = varName.toLowerCase();//将key置为小写,默认为对象的属性  
  11.             try {  
  12.                 // 获取原来的访问控制权限  
  13.                 boolean accessFlag = fields[i].isAccessible();  
  14.                 // 修改访问控制权限  
  15.                 fields[i].setAccessible(true);  
  16.                 // 获取在对象f中属性fields[i]对应的对象中的变量  
  17.                 Object o = fields[i].get(obj);  
  18.                 if (o != null)  
  19.                     map.put(varName, o.toString());  
  20.                 // System.out.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);  
  21.                 // 恢复访问控制权限  
  22.                 fields[i].setAccessible(accessFlag);  
  23.             } catch (IllegalArgumentException ex) {  
  24.                 ex.printStackTrace();  
  25.             } catch (IllegalAccessException ex) {  
  26.                 ex.printStackTrace();  
  27.             }  
  28.         }  
  29.         return map;  
  30.     }
  31. 2、将map集合转化成实体对象利用反射实/*** Map转成实体对象* @param map map实体对象包含属性* @param clazz 实体对象类型 * @return*/public static Object map2Object(Map<String, Object> map, Class<?> clazz) { if (map == null) {    return null;}Object obj = null;try {     obj = clazz.newInstance();    Field[] fields = obj.getClass().getDeclaredFields();     for (Field field : fields) {        int mod = field.getModifiers();        if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {             continue;     }    field.setAccessible(true);     field.set(obj, map.get(field.getName())); }} catch (Exception e) { e.printStackTrace();}return obj;
  32. }

Java,有多种方法可以将对象转换Map。以下是几种常见的方法: 1. 使用Apache Commons BeanUtils库:可以使用该库的BeanUtils类的`describe`方法将对象转换Map。该方法将对象的属性名作为键,属性值作为值存储在Map。示例代码如下所示: ```java import org.apache.commons.beanutils.BeanUtils; public class Main { public static void main(String[] args) throws Exception { User user = new User(); user.setId(1L); user.setName("John"); Map<String, String> map = BeanUtils.describe(user); System.out.println(map); } } ``` 引用自 2. 使用Jackson库:如果你使用的是Jackson库,你可以使用`ObjectMapper`类将对象转换Map。示例代码如下所示: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class Main { public static void main(String[] args) throws Exception { ObjectMapper objectMapper = new ObjectMapper(); User user = new User(); user.setId(1L); user.setName("John"); Map<String, Object> map = objectMapper.convertValue(user, Map.class); System.out.println(map); } } ``` 3. 使用FastJSON库:如果你使用的是FastJSON库,可以使用`toJSONString`方法将对象转换为JSON字符串,然后使用`parseObject`方法将JSON字符串转换Map。示例代码如下所示: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class Main { public static void main(String[] args) { User user = new User(); user.setId(1L); user.setName("John"); String jsonString = JSON.toJSONString(user); Map<String, Object> map = JSONObject.parseObject(jsonString, Map.class); System.out.println(map); } } ``` 这些方法都可以将Java对象转换Map,你可以根据自己的需求选择合适的方法进行使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Java对象Map互相转换的6种方式](https://blog.csdn.net/wy971744839/article/details/130308133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Java对象Map相互转换方法](https://blog.csdn.net/hello_world_9664/article/details/114755808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值