将 POJO 转换为地图
Converting POJO into map
我有一个 Java class 有 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;
}
}
我有一个 Java class 有 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;
}
}