Map to Object

linpeilie

MapStructPlus provides more powerful function for Map<String, Object> to object

Usage

Just add the @AutoMapMapper annotation to the target class when you want to automatically generate the interface and implementation classes that Map<String, Object> to the target class.

The supported value type

  • String
  • BigDecimal
  • BigInteger
  • Integer
  • Long
  • Double
  • Boolean
  • Date
  • LocalDateTime
  • LocalDate
  • LocalTime
  • URI
  • URL
  • Calendar
  • Currency
  • Custom classes(custom classes also require @AutoMapMapper annotation)

Transformation logic

For an attribute in the target class, it first determintes whether the key exists in the Map. If it does, it first determines the type, the conversion is attempted to the target type based on the type conversion tool provided by Hutoolopen in new window

It also supports internally nested Map<String, Object attributes to internally nested custom type attributes.

Example

  • Define two class:MapModelAMapModelB
@AutoMapMapper
@Data
public class MapModelA {

    private String str;
    private int i1;
    private Long l2;
    private MapModelB mapModelB;

}
@AutoMapMapper
@Data
public class MapModelB {

    private Date date;

}
  • Test
@SpringBootTest
public class QuickStartTest {

    @Autowired
    private Converter converter;

    @Test
    public void test() {
        Map<String, Object> mapModel1 = new HashMap<>();
        mapModel1.put("str", "1jkf1ijkj3f");
        mapModel1.put("i1", 111);
        mapModel1.put("l2", 11231);

        Map<String, Object> mapModel2 = new HashMap<>();
        mapModel2.put("date", DateUtil.parse("2023-02-23 01:03:23"));

        mapModel1.put("mapModelB", mapModel2);

        final MapModelA mapModelA = converter.convert(mapModel1, MapModelA.class);
        System.out.println(mapModelA);  // MapModelA(str=1jkf1ijkj3f, i1=111, l2=11231, mapModelB=MapModelB(date=2023-02-23 01:03:23))
    }
}
Last Updated 7/17/2024, 7:55:27 AM