Acceder a des données JSON de données de de jointures

Résolu/Fermé
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021 - 4 mai 2020 à 00:24
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021 - 15 mai 2020 à 01:55
Bonjour tous le monde ,

Je suis en train d'acceder a des données JSON d'un web service qui contient une liste des réclamations qui contient lui meme une liste des livraisons , Comment je peux accéder aux attributs des livraisons ??

Comment je peux par exemple lister les réclamations menées avec leurs livraison id ?

Ce qui j'ai essayé:
public class ServiceTask {
 
    public ArrayList<Livraison> tasks;
    public ArrayList<Reclamation> recs;
    public static ServiceTask instance=null;
    public boolean resultOK;
    private ConnectionRequest req;
 
    private ServiceTask() {
         req = new ConnectionRequest();
    }
 
    public static ServiceTask getInstance() {
        if (instance == null) {
            instance = new ServiceTask();
        }
        return instance;
    }
 
 public ArrayList<Reclamation> parseRecs(String jsonText){
        try {
            recs =new ArrayList<>();
            JSONParser j = new JSONParser();
            Map<String,Object> tasksListJson = j.parseJSON(new CharArrayReader(jsonText.toCharArray()));
             
            List<Map<String,Object>> list = (List<Map<String,Object>>)tasksListJson.get("root");
            for(Map<String,Object> obj : list){
                Reclamation t = new Reclamation();
                float id = Float.parseFloat(obj.get("id").toString());
                t.setId((int)id);
                t.setTitre(obj.get("titre").toString());
                t.setSujet(obj.get("sujet").toString());
                t.setDateCreation(obj.get("dateCreation").toString());
                t.setLivraisonId(obj.get("livraison").toString());
              
                recs.add(t);
            }
             
        } catch (IOException ex) {
             
        }
        return recs;
    }
 
 public ArrayList<Reclamation> getAllRecs(){
        String url = Statics.BASE_URL+"/reclamation/all";
        req.setUrl(url);
        req.setPost(false);
        req.addResponseListener(new ActionListener<NetworkEvent>() {
            @Override
            public void actionPerformed(NetworkEvent evt) {
                recs = parseRecs(new String(req.getResponseData()));
                req.removeResponseListener(this);
            }
        });
        NetworkManager.getInstance().addToQueueAndWait(req);
        return recs;
    }
}


Capture d'écran des données Json :

2 réponses

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
4 mai 2020 à 15:50
Bonjour,

Lorsque l'on manipule du JSON un peu complexe, il vaut mieux au préalable construire les objets Java qui représentent le Json. Par exemple à l'aide de http://www.jsonschema2pojo.org ou d'autres outils similaires.

Il s'agit ensuite d'utiliser un client Rest (Jax-Rs, Spring, ou autre) qui va automatiquement faire l'appel à la page web et lire son contenu pour retourner un objet Java que l'on peut ensuite facilement manipuler.

Exemple de code : https://www.baeldung.com/jersey-jax-rs-client
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
5 mai 2020 à 00:58
Je ne comprends pas quoi je dois modifier dans mon code
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
5 mai 2020 à 02:05
comment acceder a livraison id ???
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
5 mai 2020 à 13:05
Je pense qu'il faut plus ou moins revoir tout ton code, ne pas utiliser JSONParser, mais un vrai client web.
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021 > KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024
11 mai 2020 à 01:23
Quel partie du code que tu veux voir ? je vais t'envoyer tous ce que tu demande
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020 > LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
13 mai 2020 à 11:57
Je ne parlais pas de voir ton code, mais de revoir ton code, c'est à dire le modifier.
En l’occurrence enlever la partie JSONParser pour la remplacer par un client JAX-RS, par exemple avec Jersey dans le lien que je t'ai fourni.
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021 > KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024
15 mai 2020 à 01:55
I am working with code name one not marven and your link of JAX-RS do not work with Code Name One
0