我的查询结果如下 select * from Student where courseName = 'Science';
结果:
student_id | name | points | course_name | course_id |
+----------+--------+--------+---------------+-----------+
1107| Matt | 3000 | Science | 10 |
| 1108| Charley| 12348 | Science | 20 |
2 rows in set, 2 warnings (0.00 sec)
部分实现代码目前如下所示:
List<StudentDetails> studentDetailss = StudentDetailsRepository
.findByCourseId(Request.getCourseId());
List<Student> student = new ArrayList<>();
List<Item> studentList = new ArrayList<>();
Response response = new Response();
for (StudentDetails student : studentDetailss) {
IndividualItem studentItem = new IndividualItem();
studentItem.setId(student.getId());
Offer offer = new Offer();
offer.setName(studentDetailss.getName());
offer.setTotalPoints(studentDetailss.getPoints());
offer.setCourseName(studentDetailss.getCourseName());
offer.setCourseId(studentDetailss.getCourseId());
Student.add(offer);
studentItem.setOfferList(Student);
studentList.add(studentItem);
Response.setItems(studentList);
}
json_text = mapper.writeValueAsString(Response);
上面的代码打印了错误的 JSON,例如:
{"items":[{"id":"1107","details":[{"name":"Matt", "points":3000,"course_name":"Science","course_id":10},{"name": "Charley",points":12348,"course_name":"Science","course_id":20}]},{"id":"1108","details":[{"name":"Matt", "points":3000,"course_name":"Science","course_id":10},{"name": "Charley",points":12348,"course_name":"Science","course_id":20}]}]}
但是我需要生成以下 JSON 而不是上面的 JSON:
{"items":[{"id":"1107","details":[{"name":"Matt", "points":3000,"course_name":"Science","course_id":10}]},{"id":"1108","details":[{"name": "Charley",points":12348,"course_name":"Science","course_id":20}]}]}
(注意:这不是真正的代码 - 只是代码示例)
最佳答案
通过在 for 循环中初始化数组列表“student”解决了上述问题:
代码更改如下:
List<StudentDetails> studentDetailss = StudentDetailsRepository
.findByCourseId(Request.getCourseId());
List<Item> studentList = new ArrayList<>();
Response response = new Response();
for (StudentDetails student : studentDetailss) {
IndividualItem studentItem = new IndividualItem();
studentItem.setId(student.getId());
Offer offer = new Offer();
offer.setName(studentDetailss.getName());
offer.setTotalPoints(studentDetailss.getPoints());
offer.setCourseName(studentDetailss.getCourseName());
offer.setCourseId(studentDetailss.getCourseId());
Student.add(offer);
studentItem.setOfferList(Student);
studentList.add(studentItem);
Response.setItems(studentList);
}
json_text = mapper.writeValueAsString(Response);
关于java - 从 Java 对象生成正确的 JSON - Jackson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817057/