繁体   English   中英

如何将 java 个对象的列表转换为映射列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM