将POJO转换为地图



我有一个Java类,它有10个属性,我想将其转换为3个映射(将其分解为5,3,2个字段(。我做了一些研究,发现Jackson的ObjectMapper可以通过做这样的事情来使用:

/**
* Using Jackson Databind.
*/
import java.util.HashMap;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonExample {

private static final ObjectMapper objectMapper = new ObjectMapper();

@SuppressWarnings("unchecked")
public HashMap<String, Object> convert(Person person) {

HashMap<String, Object> hashMap = objectMapper.convertValue(person, HashMap.class);
return hashMap;
}
}

这将为我的POJO中的所有属性创建一个单个映射

我想要的是将这个POJO转换为3个不同的映射(它们本质上是DynamoDB的字段(我可以单独定义3个POJO,并分别在每个POJO上使用ObjectMapper,或者有其他方法可以做到这一点,所有字段都只保留在一个POJO中?

我探索了mapStruct(https://mapstruct.org/)从中得不到什么。想法?

您可以创建方法来获得所需的映射。

public class Test {
public static void main(String[] args) {
Person person = new Person("Foo", "Bar", "1", "99999", "email@com");
System.out.println(person.getNameMap());
System.out.println(person.getIdMap());
System.out.println(person.getContactMap());
}
}
@AllArgsConstructor
class Person {
private String firstName;
private String lastName;
private String id;
private String mobileNumber;
private String email;
public HashMap<String, Object> getNameMap() {
HashMap<String, Object> map = new HashMap<>();
map.put("firstName", this.firstName);
map.put("lastName", this.lastName);
return map;
}
public HashMap<String, Object> getIdMap() {
HashMap<String, Object> map = new HashMap<>();
map.put("id", this.id);
return map;
}
public HashMap<String, Object> getContactMap() {
HashMap<String, Object> map = new HashMap<>();
map.put("mobileNumber", this.mobileNumber);
map.put("email", this.email);
return map;
}
}

最新更新