Parsing json
Kilkenny95
Messages postés
151
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour tout le monde,
J'ai réussi à parser mon JSON, cependant j'aimerai "regrouper" mes info, je ml'explique :
J'obtiens avec mon code :
Mais j'aimerai transformer en ca :
Merci !
Mon code :
ici Fruit = project-name
Agrume = todo-list
Pamplemousse = content
et sur mon .jsp
J'ai réussi à parser mon JSON, cependant j'aimerai "regrouper" mes info, je ml'explique :
J'obtiens avec mon code :
- Fruits - Agrume -orange - Fruits -Agrume -pamplemousse - Fruits - fruit à noyau -abricot - Fruits - fruit à noyau -mangue - Fruits -Légumineuse -lentilles - Légumes - Légumineuse -haricot - Légumes -crudité -concombre - Légumes -crudité -courge
Mais j'aimerai transformer en ca :
-Fruit -Agrume -orange -pamplemousse -fruit à noyau -abricot -mangue -Légume -etc
Merci !
Mon code :
public class Parsing { public ArrayList<String> listName = new ArrayList<String>(); public ArrayList<String> todoList = new ArrayList<String>(); public ArrayList<String> contentList = new ArrayList<String>(); public Parsing(StringBuffer responseContent) throws JSONException{ String reponseBrute = new String(responseContent.toString()); JSONObject obj = new JSONObject(reponseBrute); JSONArray arrayListName = obj.getJSONArray("todo-items"); JSONArray arrayTodoList = obj.getJSONArray("todo-items"); JSONArray arrayContent = obj.getJSONArray("todo-items"); for(int i = 0 ; i < arrayListName.length() ; i++){ listName.add(arrayListName.getJSONObject(i).getString("project-name")); } for(int i = 0 ; i < arrayTodoList.length() ; i++){ todoList.add(arrayTodoList.getJSONObject(i).getString("todo-list-name")); } for(int i = 0 ; i < arrayContent.length() ; i++){ contentList.add(arrayContent.getJSONObject(i).getString("content")); } System.out.println("PROJECT NAME = "+ listName); System.out.println("LISTE NAME = "+ todoList); System.out.println("CONTENT NAME = "+ contentList); } }
ici Fruit = project-name
Agrume = todo-list
Pamplemousse = content
et sur mon .jsp
try{ HttpConnexion h = new HttpConnexion(); Parsing p =new Parsing(h.responseContent); for(int i=0; i<p.listName.size(); i++){ if(p.listName.get(i) !=null){ out.println("project : " + i + " = " + p.listName.get(i)); %> <br/> <% out.println("list : " + i + " = " + p.todoList.get(i)); %> <br/> <% out.println("content : " + i + " = " + p.contentList.get(i)); %> <br/> <% out.println(" "); %> <br/> <% } } }catch(JSONException e){ }
1 réponse
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.