java8_“Map转为对象“

文章展示了如何在Java中利用JSON库将一个Map转换为自定义的对象,例如将一个包含`userName`和`age`的Map转换为`Person`类的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于一个Map我们如何把它转成对应的对象呢,其实方法很多,我之前用的比较多的是通过JSON转换,如下:

public class Person {
 
    private String userName;
 
    private int age;
 
    public String getUserName() {
        return userName;
    }
 
    public int getAge() {
        return age;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
}
public static void main(String[] args) {
        Map<String,Object> source=new HashMap<>();
        source.put("userName","张三");
        source.put("age",1);
        //map转为对象
        Person person = JSONObject.parseObject(JSONObject.toJSONString(source), Person.class);
        System.out.println(JSONObject.toJSONString(person));
    }
### JavaMap 转换为对象的方法 在 Java 中,有多种方法可以将 `Map` 转换为对象。以下是几种常见的实现方式: #### 方法一:使用 Jackson 库 Jackson 是一个流行的 JSON 处理库,在处理 `Map` 和对象之间的转换时非常方便。 ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.util.HashMap; import java.util.Map; public class MapToObjectExample { public static void main(String[] args) throws Exception { ObjectMapper mapper = new ObjectMapper(); // 创建一个示例 Map Map<String, Object> map = new HashMap<>(); map.put("id", 1); map.put("name", "Alice"); map.put("age", 30); // 将 Map 转换为指定类型的对象 User user = mapper.convertValue(map, User.class); System.out.println("User: " + user); } } ``` 此代码片段展示了如何通过 Jackson 的 `ObjectMapper` 类来完成从 `Map` 到自定义类实例的转换[^2]。 #### 方法二:使用 ModelMapper 工具 ModelMapper 提供了一种简单而强大的 API 来映射数据结构之间复杂的关联关系。 ```java import org.modelmapper.ModelMapper; import java.util.HashMap; import java.util.Map; public class ModelMapperUtil { private static final ModelMapper modelMapper = new ModelMapper(); public static <D> D convertMapToObject(Map<String, ?> source, Class<D> destinationType) { return modelMapper.map(source, destinationType); } public static void main(String[] args) { // 创建一个示例 Map Map<String, Object> map = new HashMap<>(); map.put("id", 1); map.put("name", "Alice"); map.put("age", 30); // 使用 ModelMapper 进行转换 User user = convertMapToObject(map, User.class); System.out.println("User: " + user); } } ``` 这段代码说明了利用 `ModelMapper` 实现相同功能的过程[^4]。 #### 方法三:手动编写转换逻辑 对于简单的场景,也可以直接手写转换函数来进行属性赋值操作。 ```java public class ManualConversion { public static User convertFromMap(Map<String, Object> map) { int id = (int) map.get("id"); String name = (String) map.get("name"); int age = ((Number) map.get("age")).intValue(); return new User(id, name, age); } public static void main(String[] args) { // 创建一个示例 Map Map<String, Object> map = new HashMap<>(); map.put("id", 1); map.put("name", "Alice"); map.put("age", 30); // 手动转换 User user = convertFromMap(map); System.out.println("User: " + user); } } ``` 这种方法虽然较为繁琐,但在某些特定情况下可能更加灵活和可控[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值