当前位置:   article > 正文

Java中实体与Map的相互转换_java 实体类转map

java 实体类转map

一、在Java中,可以通过以下方法将实体类转换为Map:

  1. 利用Java反射机制:
public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {
    Map<String, Object> map = new HashMap<>();
    Class<?> clazz = obj.getClass();
    for (Field field : clazz.getDeclaredFields()) {
        field.setAccessible(true);
        String fieldName = field.getName();
        Object value = field.get(obj);
        map.put(fieldName, value);
    }
    return map;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 利用Java 8 Stream API:
public static Map<String, Object> objectToMap(Object obj) {
    return Arrays.stream(obj.getClass().getDeclaredFields())
            .peek(field -> field.setAccessible(true))
            .collect(Collectors.toMap(Field::getName, field -> {
                try {
                    return field.get(obj);
                } catch (IllegalAccessException e) {
                    return null;
                }
            }));
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

以上两种方法都可以将实体类转换为Map。需要注意的是,这些方法仅会将实体类中的属性转换为Map中的键值对,不会包含方法、构造器、父类属性等其他部分。

二、要将map转换为实体类对象,可以使用以下方法:

  1. 使用Java反射机制:
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

public class MapToEntity {
    public static void main(String[] args) throws IllegalAccessException {
        Map<String, Object> map = new HashMap<>();
        map.put("name", "张三");
        map.put("age", 25);

        User user = mapToEntity(map, User.class);
        System.out.println(user);
    }

    public static <T> T mapToEntity(Map<String, Object> map, Class<T> clazz) {
        T obj = null;
        try {
            obj = clazz.newInstance();
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                String key = entry.getKey();
                Object value = entry.getValue();
                Field field = clazz.getDeclaredField(key);
                field.setAccessible(true);
                field.set(obj, value);
            }
        } catch (InstantiationException | IllegalAccessException | NoSuchFieldException e) {
            e.printStackTrace();
        }
        return obj;
    }
}

class User {
    private String name;
    private int age;

    // 省略getter和setter方法
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  1. 使用第三方库:例如Jackson、Gson等。这里以Jackson为例:
    首先,添加Jackson依赖到项目中(以Maven为例):
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.5</version>
</dependency>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

然后,创建实体类User:

public class User {
    private String name;
    private int age;

    // 省略getter和setter方法
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

接下来,使用Jackson将map转换为User对象:

import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;

public class MapToEntity {
    public static void main(String[] args) throws Exception {
        Map<String, Object> map = new HashMap<>();
        map.put("name", "张三");
        map.put("age", 25);

        ObjectMapper objectMapper = new ObjectMapper();
        User user = objectMapper.convertValue(map, User.class);
        System.out.println(user);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/344390?site
推荐阅读
相关标签
  

闽ICP备14008679号