欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實體類轉(zhuǎn)成map的實現(xiàn)

 更新時間:2022年06月21日 11:11:54   作者:南大白  
這篇文章主要介紹了java實體類轉(zhuǎn)成map的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

java實體類轉(zhuǎn)成map

1.第一種

?<!-- 配置gson -->
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>com.google.code.gson</groupId>
? ? ? ? ? ? <artifactId>gson</artifactId>
? ? ? ? ? ? <version>2.8.6</version>
? ? ? ? </dependency>
? ? ? ?Map<String, Object> map = null;
? String jsonString = JSONUtil.toJsonStr(uploadBaseEntity);
? ? ? ?Gson gson = new Gson();
? ? ? ? map = new HashMap<>();
? ? ? ? map = gson.fromJson(jsonString, map.getClass());

2.第二種

/**
? ? ?* 對象轉(zhuǎn)化為Map
? ? ?*
? ? ?* @param obj
? ? ?* @return
? ? ?* @throws Exception
? ? ?*/
? ? public static Map<String, String> objectToMap01(Object obj) throws Exception {
? ? ? ? if (obj == null) {
? ? ? ? ? ? return null;
? ? ? ? }
? ? ? ? Map<String, String> map = new HashMap<String, String>();
?
? ? ? ? Field[] declaredFields = obj.getClass().getDeclaredFields();
? ? ? ? for (Field field : declaredFields) {
? ? ? ? ? ? field.setAccessible(true);
? ? ? ? ? ? map.put(field.getName(), (String) field.get(obj));
? ? ? ? }
?
? ? ? ? return map;
? ? }

java實體類與map集合互轉(zhuǎn)

廢話不說,直接上代碼!留著用吧...

package com.ddm.message.test;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
?* Java實體類與Map互轉(zhuǎn)
?* @author Administrator
?*
?*/
public class entityMapTransUtils {
? ? private static final Logger logger = LoggerFactory.getLogger(entityMapTransUtils.class);
? ? /**
? ? ?* Java實體類轉(zhuǎn)Map:方法一
? ? ?* @param obj
? ? ?* @return
? ? ?*/
? ? public static Map<String, Object> entityToMap1(Object obj){
? ? ? ? Map<String, Object> map = new HashMap<String, Object>();
? ? ? ? Class<?> clazz = obj.getClass();
? ? ? ? for(Field field : clazz.getDeclaredFields()){
? ? ? ? ? ? field.setAccessible(true);
? ? ? ? ? ? String fieldName = field.getName();
? ? ? ? ? ? Object object = null;
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? object = field.get(obj);
? ? ? ? ? ? } catch (IllegalArgumentException | IllegalAccessException e) {
? ? ? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? ? ? }
? ? ? ? ? ? map.put(fieldName, object);
? ? ? ? }
? ? ? ? return map;
? ? }

? ? /**
? ? ?* Java實體類轉(zhuǎn)Map:方法二
? ? ?* @param obj
? ? ?* @return
? ? ?*/
? ? public static Map<String, Object> entityToMap2(Object obj){
? ? ? ? Map<String, Object> map = new HashMap<String, Object>();
? ? ? ? try {
? ? ? ? ? ? BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
? ? ? ? ? ? PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
? ? ? ? ? ? for (PropertyDescriptor property : propertyDescriptors) {
? ? ? ? ? ? ? ? String key = property.getName();
? ? ? ? ? ? ? ? // 過濾class屬性
? ? ? ? ? ? ? ? if (!key.equals("class")) {
? ? ? ? ? ? ? ? ? ? // 得到property對應(yīng)的getter方法
? ? ? ? ? ? ? ? ? ? Method getter = property.getReadMethod();
? ? ? ? ? ? ? ? ? ? Object value = getter.invoke(obj);
? ? ? ? ? ? ? ? ? ? map.put(key, value);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? }
? ? ? ? return map;
? ? }
? ??
? ? /**
? ? ?* Map轉(zhuǎn)實體類:要轉(zhuǎn)換的Map的key跟實體類屬性名相同的數(shù)據(jù)會轉(zhuǎn)過去,不相同的字段會為null
? ? ?* @param clazz
? ? ?* @param map
? ? ?* @return
? ? ?*/
? ? public static <T> T mapToEntity1(Class<T> clazz,Map<String, Object> map){
? ? ? ? T obj = null;
? ? ? ? try {
? ? ? ? ? ? BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
? ? ? ? ? ? obj = clazz.newInstance(); // 創(chuàng)建 JavaBean 對象
? ? ? ? ? ? PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
? ? ? ? ? ? // 給 JavaBean 對象的屬性賦值
? ? ? ? ? ? for (int i = 0; i < propertyDescriptors.length; i++) {
? ? ? ? ? ? ? ? PropertyDescriptor descriptor = propertyDescriptors[i];
? ? ? ? ? ? ? ? String propertyName = descriptor.getName();
? ? ? ? ? ? ? ? if (map.containsKey(propertyName)) {
? ? ? ? ? ? ? ? ? ? Object value = map.get(propertyName);
? ? ? ? ? ? ? ? ? ? Object[] args = new Object[1];
? ? ? ? ? ? ? ? ? ? args[0] = value;
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? descriptor.getWriteMethod().invoke(obj, args);
? ? ? ? ? ? ? ? ? ? } catch (InvocationTargetException e) {
? ? ? ? ? ? ? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } catch (IllegalAccessException e) {
? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? } catch (IntrospectionException e) {
? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? } catch (IllegalArgumentException e) {
? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? } catch (InstantiationException e) {
? ? ? ? ? ? logger.info(e.getMessage());
? ? ? ? }
? ? ? ? return (T)obj;
? ? }
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 什么是jsoup及jsoup的使用

    什么是jsoup及jsoup的使用

    jsoup是一款基于Java的HTML解析器,它提供了一套非常省力的API,不但能直接解析某個URL地址、HTML文本內(nèi)容,而且還能通過類似于DOM、CSS或者jQuery的方法來操作數(shù)據(jù),所以?jsoup?也可以被當做爬蟲工具使用,這篇文章主要介紹了什么是jsoup及jsoup的使用,需要的朋友可以參考下
    2023-10-10
  • MyBatis中association的基本使用方法

    MyBatis中association的基本使用方法

    在項目中某些實體類之間肯定有關(guān)鍵關(guān)系,比如一對一,一對多等,在hibernate中用one to one和one to many,而mybatis中就用association和collection,下面這篇文章主要給大家介紹了關(guān)于MyBatis中association基本使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Java System.exit()退出程序方式

    Java System.exit()退出程序方式

    這篇文章主要介紹了Java System.exit()退出程序方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 本地啟動RocketMQ未映射主機名產(chǎn)生的超時問題最新解決方案

    本地啟動RocketMQ未映射主機名產(chǎn)生的超時問題最新解決方案

    這篇文章主要介紹了本地啟動RocketMQ未映射主機名產(chǎn)生的超時問題,本文給大家分享最新解決方案,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • 老生常談Java中List與ArrayList的區(qū)別

    老生常談Java中List與ArrayList的區(qū)別

    大家都知道List是接口,ArrayList是List接口的一個實現(xiàn)類,接下來通過本文給大家介紹Java中List與ArrayList的區(qū)別,需要的朋友可以參考下
    2022-08-08
  • Java將網(wǎng)絡(luò)圖片轉(zhuǎn)成輸入流以及將url轉(zhuǎn)成InputStream問題

    Java將網(wǎng)絡(luò)圖片轉(zhuǎn)成輸入流以及將url轉(zhuǎn)成InputStream問題

    這篇文章主要介紹了Java將網(wǎng)絡(luò)圖片轉(zhuǎn)成輸入流以及將url轉(zhuǎn)成InputStream問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Nacos通過RefreshScope實現(xiàn)配置自動更新的方式分享

    Nacos通過RefreshScope實現(xiàn)配置自動更新的方式分享

    這篇文章主要給大家介紹了Nacos如何通過RefreshScope實現(xiàn)配置自動更新,文中給了兩種實現(xiàn)方式供大家參考,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • SpringBoot+SpringSession+Redis實現(xiàn)session共享及唯一登錄示例

    SpringBoot+SpringSession+Redis實現(xiàn)session共享及唯一登錄示例

    這篇文章主要介紹了SpringBoot+SpringSession+Redis實現(xiàn)session共享及唯一登錄示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • JavaFx UI控件與代碼間的綁定方法

    JavaFx UI控件與代碼間的綁定方法

    這篇文章主要為大家詳細介紹了JavaFx UI控件與代碼間如何綁定,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • java Thread 多線程

    java Thread 多線程

    本篇文章小編為大家介紹,java Thread 多線程。需要的朋友參考下
    2013-04-04

最新評論