Parsing json
Kilkenny95
Messages postés
178
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
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 :
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.