java - 如何使用 map 中的嵌入式集合填充对象?

标签 java collections pojo dozer

我正在尝试用 Dozer 解决这个问题,但没有找到相关信息:

我想使用 Dozer 从 http 请求参数填充一个嵌入式集合。

我可以将请求参数作为 java.util.Map(如下面的“requestMap”)使用,条目如下所示:

Map<String, String> requestMap (key -> value) =
- "id" -> "15"
- "title" -> "Nice article about electric cars"
- "comments[0].text" -> "comment 1"
- "comments[1].text" -> "comment 2"

我要填充的 bean:

public class Article {
  int id;
  String title;
  List<Comment> comments;
}

public class Comment {
  String text;
}

当我使用“mapper.map(requestMap, article)”时,文章“标题”和“id”属性会很好地从 map 中填充。但是,“评论”集合不会被填充。

Dozer 是否也应该能够填充集合?我需要做什么才能填充它?

最佳答案

我认为 Dozer 不够聪明,无法将此映射:comments[0].textList评论

您可以从您的requestMap 中手动提取您的值并从中创建一个列表。

List<Comment> comments = map.entrySet().stream()
            .filter(entry -> entry.getKey().startsWith("comments"))
            .map(entryTwo -> new Comment(entryTwo.getValue()))
            .collect(Collectors.toList());

然后将其包含在您的文章中:

article.setComments(comments);

关于java - 如何使用 map 中的嵌入式集合填充对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46295146/

相关文章:

database - IntelliJ IDEA 10 从数据库模型生成实体(POJO)

java - 尝试在 JPanel 上绘制但没有成功

java - 如何使用不同数据类型的其他列表中的值填充java中的列表?

java - 在Java中读取文本文件(.txt)时发生错误

python - 如何在不弹出的情况下查看双端队列的前面?

c# - 在 C# 中传递派生对象的集合

Excel VBA : Why "Sheets" collection is not a "Collection"?

java - 如何从 CSV header 创建 pojo 类

java - 基于 POJO 生成 EJB3 带注释的 Bean

java - 什么是java中间件技术