Je le résultat suivant pour la requête select * from student where courseName = 'Science';
Besoin de changer mon code pour générer correct JSON de Java Object - Jackson
Résultats:
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)
StudentsDetails.java:
@Entity(name = "com.StudentDetails")
public class StudentDetails extends AbstractPersistable<Long> {
private long studentId;
private String name;
private long points;
private String courseName;
private long courseId;
public StudentDetails(long studentId, String name, long points, String courseName, long courseId) {
this.studentId = studentId;
this.name = name;
this.points = points;
this.courseName = courseName;
this.courseId = courseId;
}
public long getStudentId() {
return studentId;
}
public String getName() {
return name;
}
public long getPoints() {
return points;
}
public String getCourseName() {
return courseName;
}
public long getCourseId() {
return courseId;
}
}
I voulez générer une chaîne JSON comme:
{
"items": [
{
"id": "123",
"students": [
{
"name": 'Matt',
"points": 3000,
"course_name": 'Science',
"course_id": 10
}
]
},
{
"id": "324",
"students": [
{
"name": 'Charley',
"points": 12348,
"course_name": Science,
"course_id": 20
}
]
},
{
"id": "898",
"error": {
"error_code": "500",
"error_message": "Details not found"
}
}
]
}
Une partie du code de mise en œuvre ressemble actuellement:
for (int i = 0; i < studentDetails.size(); i++) {
Details details = new Details();
details.setName(studentDetails.get(i).getName());
details.setPoints(studentDetails.get(i).getPoints());
details.setCourseName(studentDetails.get(i).getCourseName());
details.setCourseId(studentDetails.get(i).getCourseId());
Listdetails.add(details);
item.setListDetails(Listdetails);
}
response = mapper.writeValueAsString(item);
Au-dessus imprime le code le mauvais JSON comme:
{"items":[{"id":"1107","details":[{"name": "Matt","points":3000,"course_name":"Science,"course_id":10},{"name":"Charley","points":12348,"course_name":"Science","course_id":20}]}]}
au lieu de
{"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}]}
S'il vous plaît aidez-moi à écrire une bonne mise en œuvre code pour générer le bon JSON. (Note: Il est pas le code réel - juste un échantillon du code réel)
En bref: Je veux lire les entrées de la table de base de données et le rendre aussi:
items array -> [
0th index : student_id, other related details (1107,['Matt',3000,'Science',10]
1st index : student_id, other related details(1108,['Charley',12348,'Science',20]
]
quoi de neuf? ourse? quel est l'objet? –
Pourquoi un étudiant a-t-il un nom de cours? –
Le JSON n'est pas performant depuis la création d'une liste où un seul étudiant est dedans, n'est pas nécessaire. Le fichier JSON généré est plutôt bon. Vous pouvez bien sûr ajouter un identifiant avant l'étudiant. Modifiez votre 'Details'Object pour qu'il contienne également un ID ou créez un POJO' Wrapper' pour contenir ces valeurs. Pensez aussi aux doutes et aux questions de Maurice. Ils semblent douteux. – Nico