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 :
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.