I am trying to create a key and value relationship and return in a json format between list of data returned by Database. I'm able to achieve the relationship but not able to get the desired Json Format as a output
StudentProfResponse = profRepository.getstudentProfessorHirarchy();
studentprofResponse.stream().collect(Collectors.groupingBy(StudentProfResponse::getProfessorName));
Db Results
ProfessorName ProfessorId StudentId StudentName
Vinay P123 S567 Karthik
Vinay P123 S568 Jeevan
Mayank P657 S569 Meena
Vasu P723 S570 Vijay
Json Format Im getting with the above code
[
{
"vinay": [
{
"studentId": "S567",
"StudentName": "Karthik",
"professorName": "Vinay",
"professorId": "P123"
},
{
"studentId": "S568",
"StudentName": "Jeevan",
"professorName": "Vinay",
"professorId": "P123"
}
]
},
{
"Mayank": [
{
"studentId": "S569",
"StudentName": "Meena",
"professorName": "Mayank",
"professorId": "P657"
}
]
},
{
"vasu": [
{
"studentId": "S570",
"StudentName": "Vijay",
"professorName": "Vasu",
"professorId": "P723"
}
]
}
]
Json format im Expecting
[
{
"professorName": "Vinay",
"professorId" : "P123",
"studentDetails": [
{
"studentId": "S567",
"StudentName": "Karthik"
},
{
"studentId": "S568",
"StudentName": "Jeevan"
}
]
},
{
"professorName": "Mayank",
"professorId" : "P657",
"studentDetails": [
{
"studentId": "S569",
"StudentName": "Meena"
}
]
},
{
"professorName": "Vasu",
"professorId" : "P723",
"studentDetails": [
{
"studentId": "S570",
"StudentName": "Vijay"
}
]
}
]
Is there a way, I can achieve above Json Format through Java 8 stream API by creating a bean class like and send a List of studprofrelationship details
public class StudentProfessorRelationship {
private Integer professorNo;
private String professorName;
private List<StudentDetails> studentDetails;
}