[英]How to convert a list of java objects into a list of maps
我有以下域 object
Class Student {
private int id;
private String name;
private int age;
}
我有一个List<Student>
我如何将其转换为 map 的列表,如下所示
[{
"id": 1,
"name": "abc",
"age": 2
}, {
"id": 2,
"name": "pqr",
"age": 3
}]
最简单的方法是在您的Student
class 中创建一个toHashMap()
方法:
public LinkedHashMap<String,Object> toHashMap(){
LinkedHashMap<String, Object> h = new LinkedHashMap<>();
h.put("Id",id);
h.put("Name", name);
h.put("Age",age);
return h;
}
我使用LinkedHashMap
来保留插入顺序。 完成后,试试这个:
List<Student> ls = new ArrayList<>();
ls.add(new Student(12123,"Tom",12));
ls.add(new Student(12354,"George",21));
ls.add(new Student(12245,"Sara",16));
ls.add(new Student(17642,"Caitlyn",11));
List<LinkedHashMap<String,Object>> names = ls.stream().map(Student::toHashMap).collect( Collectors.toList() );
System.out.println(names);
Output: [{Id=12123, Name=Tom, Age=12}, {Id=12354, Name=George, Age=21}, {Id=12245, Name=Sara, Age=16}, {Id=17642, Name=Caitlyn, Age=11}]
我会说获取 object 并在声明的字段上迭代就足以满足您要执行的操作。 像这样:
private static List<Map<String,Object>> objectsToMap(List<Object> objects) throws IllegalAccessException {
List<Map<String,Object>> result = new ArrayList<>();
for (Object object : objects) {
Map<String,Object> map = new HashMap<>();
for (Field field : object.getClass().getDeclaredFields()) {
var oldAccessibility = field.canAccess(object);
field.setAccessible(true);
var value = field.get(object);
map.put(field.getName(), value);
field.setAccessible(oldAccessibility);
}
result.add(map);
}
return result;
}
尽管如此,您似乎正在尝试将普通的 object 字符串转换为 JSON 字符串,并且有一些库非常适合。 查看这个关于将对象转换为 json 的 stackoverflow 线程,如果这确实是您想要实现的目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.