【发布时间】:2019-06-12 02:53:22
【问题描述】:
我的基础课是:
public class Student {
public String name;
public String className; // In real code I'd have a second object for return to the end user
public List<String> classes; // Can be zero
}
我想把它弄平,这样我就可以返回类似的东西
[
{
"name":"joe",
"class":"science"
},
{
"name":"joe",
"class":"math"
},
]
为了简单起见,显然是一个愚蠢的例子。
我能够做到这一点的唯一方法是通过一些冗长的代码,例如:
List<Student> students = getStudents();
List<Student> outputStudents = new ArrayList<>();
students.forEach(student -> {
if(student.getClasses().size() > 0) {
student.getClasses().forEach(clazz -> {
outputStudents.add(new Student(student.getName(), clazz));
});
} else {
outputStudents.add(student);
}
});
看看有没有办法简化这个,也许使用flapMap?
【问题讨论】:
-
您是在问如何构建 JSON?
-
另外
class是一个关键字,所以你不能在这样的lambda中使用它 -
这是 sudo 代码,所以我有点懒惰。我将 lombok 用于获取器/设置器。并且讨厌收集资源等。
-
哦误读了这个问题。 Hateoas/HttpEntity 将为我处理对象-> json。所以我只需要以正确的方式组装对象。就像所有有趣的事情一样,我必须满足另一个系统对我如何发送它的需求。
-
这段代码中有三个属性,但显示的输出中有两个。目前还不太清楚你想要什么。
className与classes有何不同?
标签: java arrays java-stream flatmap