Parsing json
Fermé
Kilkenny95
Messages postés
157
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
31 août 2020
-
Modifié le 11 mars 2020 à 17:45
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 11 mars 2020 à 20:43
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 11 mars 2020 à 20:43
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
Modifié le 11 mars 2020 à 20:43
Modifié le 11 mars 2020 à 20:43
Bonjour,
Java est un langage de programmation objet.
Il faut que tu structures tes données avec des objets.
Exemple :
Remarque : le code suivant dépendra évidemment de la structure du Json à lire (mais comme tu ne nous l'a pas donné, impossible de deviner !)
Remarque : du code dans une Jsp comme tu l'as fait c'est contraire à l'architecture multi-tiers de Java EE et plus généralement à tous les pattern MVC.
Il faut que tu sépares la partie logique de ton programme (HttpConnexion, Parsing, etc.) de l'affichage (Jsp), chaque classe a son rôle, il ne faut pas tout mélanger.
Java est un langage de programmation objet.
Il faut que tu structures tes données avec des objets.
Exemple :
public class Project {
String name;
List<Task> tasks;
}
public class Task {
String name;
List<Content> contents;
}
public class Content {
String description;
}
Remarque : le code suivant dépendra évidemment de la structure du Json à lire (mais comme tu ne nous l'a pas donné, impossible de deviner !)
public static Project parseProject(JSONObject json) {
Project project = new Project();
project.setName(json.getString("name"));
JSONArray array = obj.getJSONArray("tasks");
List<Task> tasks = new ArrayList<>(array.length());
for (int i=0; i<array.length(); i++) {
tasks.add(parseTask(array.getJSONObject(i));
}
project.setTasks(tasks);
return project;
}
public static Task parseTask(JSONObject json) {
Task task = new Task();
task.setName(json.getString("name"));
JSONArray array = obj.getJSONArray("contents");
List<Content> contents = new ArrayList<>(array.length());
for (int i=0; i<array.length(); i++) {
contents.add(parseContent(array.getJSONObject(i));
}
project.setContents(contents);
return task;
}
public static Content parseContent(JSONObject json) {
Content content = new Content();
content.setDescription(json.getString("description"));
return content;
}
Remarque : du code dans une Jsp comme tu l'as fait c'est contraire à l'architecture multi-tiers de Java EE et plus généralement à tous les pattern MVC.
Il faut que tu sépares la partie logique de ton programme (HttpConnexion, Parsing, etc.) de l'affichage (Jsp), chaque classe a son rôle, il ne faut pas tout mélanger.