0
votes

Aux données de type org.json.jsonObject ne peut pas être convertie en jsonarray

Ma réponse xxx

code Java xxx


1 commentaires

Votre data est l'objet imbriqué réel, pas un tableau


6 Réponses :


1
votes

La réponse que vous obtenez est un jsonObject pas un jsonarray .


0 commentaires

0
votes

Tout d'abord, vous devriez obtenir data ​​code> comme jsonObject Ensuite, à partir de cet objet, vous pouvez récupérer la matrice dont vous avez besoin :)

try {
            JSONObject res = new JSONObject(response);

            if (res.getString("status").equalsIgnoreCase("success")) {
                JSONObject TQMData = res.getJSONObject("data");
                JSONArray arrayTQMData = TQMData.getJSONArray("root_cause_identification");
                for (int i = 0; i < arrayTQMData.length(); i++) {
                    JSONObject obj = arrayTQMData.getJSONObject(i);
                    stepsList.add(new TQMSavedDataModel(obj.getString("tangible_benefits"),
                            obj.getString("intangible_benefits"),
                            obj.getString("total_annual_savings"),
                            (List<RootCauseIdentificationModel>) obj.getJSONObject("root_cause_identification")
                    ));
                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
            dialog.dismiss();
            Toast.makeText(getActivity(), "Something went wrong, please try again.", Toast.LENGTH_SHORT).show();
            getActivity().finish();
        }


4 commentaires

J'ai édité ma réponse, mais gardez à l'esprit que les données que vous récupérez de JSON ne font pas partie d'un tableau .. tangible_benefits , intangible_benefits , total_annual_savings sont montrés qu'une seule fois dans le JSON. Ils ne font pas partie d'un tableau :)


obj.getjsonObject ("root_cause_identification") Il s'agit d'un tableau d'objets


s'il vous plaît garder à l'esprit, j'utilise deux modèles dans ce 1er modèle est TQMSavedDataModel qui contiennent tangible_benefits, intangible_benefits, total_annual_savings et RootCauseIdentificationModel. Le 2e modèle est le modèle rootcAusIdIdIdIdIdIdIdIdIdIdInIdIdIdInIdInIdInIdInIdIndIdIndIdIndIdIndIdIndIndIdIndId, Solution_ImplementationD, implémentatriion_dat e


'Cause root Identification' Ce nom de clé à plusieurs endroits avec plusieurs types?



0
votes
try {
            JSONObject res = new JSONObject(response);
            if (res.getString("status").equalsIgnoreCase("success")) {
                JSONObject TQMData = res.getJsonObject("data");
                JSONArray root_cause_identification = TQMData.getJsonArray("root_cause_identification");
                    for(int i=0; i< root_cause_identification.length;i++){
                        JsonObject root_cause_identificationObject = root_cause_identification.get(i);
                        // Unmarshal this for the Bean and add to list

                    }
            }
        } catch (JSONException e) {
            e.printStackTrace();
            dialog.dismiss();
            Toast.makeText(getActivity(), "Something went wrong, please try again.", Toast.LENGTH_SHORT).show();
            getActivity().finish();
        }

6 commentaires

obj.getjsonObject ("root_cause_identification") Il s'agit d'un tableau d'objets


obj, non trouvé


Maintenant, mon application d'application et mon erreur est que java.lang.classcastException: org.json.jsonObject ne peut pas être lancé à java.Util.List Cette erreur s'allume (liste ) RootCauseAryAry.getjsonObject (0)


Vous devez le déboguer, le problème majeur que j'ai souligné


Et ce n'est pas une liste


J'ai fait des changements, j'espère que vous avez eu l'idée



4
votes

Veuillez essayer ci-dessous le code:

try {
            JSONObject res = new JSONObject(response);

            if (res.getString("status").equalsIgnoreCase("success")) {

                JSONObject TQMData = res.getJSONObject("data");
                String tangible_benefits = TQMData.getString("tangible_benefits");
                String intangible_benefits = TQMData.getString("intangible_benefits");
                String total_annual_savings = TQMData.getString("total_annual_savings");

                JSONArray root_cause_identification = TQMData.getJSONArray("root_cause_identification");

                for (int i = 0; i < root_cause_identification.length(); i++) {
                    JSONObject jsonObject = root_cause_identification.getJSONObject(i);
                    String id = jsonObject.getString("id");
                    String projectid = jsonObject.getString("projectid");
                    String step = jsonObject.getString("step");
                    String root_cause_identified = jsonObject.getString("root_cause_identified");
                    String solution_implemented = jsonObject.getString("solution_implemented");
                    String implementaion_date = jsonObject.getString("implementaion_date");
                    String createdby = jsonObject.getString("createdby");
                    String updatedby = jsonObject.getString("updatedby");
                    String created_date = jsonObject.getString("created_date");
                    String updated_date = jsonObject.getString("updated_date");
                }

            }
        } catch (JSONException e) {
            e.printStackTrace();
        }


1 commentaires

J'ai un modèle, qui contient, des données de tangible_benefits, intangibles_benefits, total_annual_savings, r oot_cause_identifica tion. c'est pourquoi je en utilisant la liste



1
votes

Essayez ceci ci-dessous Réponse, ci-dessus selon votre échantillon JSON, vous essayez d'introduire des "données" et "root_cause_identification" à tort xxx


14 commentaires

JSONObject obj = res.getjsonarray ("Data") erreur dans cette ligne


Maintenant, mon application d'application et mon erreur est que java.lang.classcastException: org.json.jsonObject ne peut pas être lancé à java.Util.List Cette erreur s'allume (liste ) RootCauseAryAry.getjsonObject (0)


Maintenant c'est votre tâche. rootCauseIdentificationArray.getJSONObject (0) est un objet que vous ne pouvez pas lancer comme liste .... essayez donc de créer la liste avec les données itérées du tableau d'objets


ArrayListe privée


RootCause publiqueDidIdidIdidIdIdIdIdInInInIdInIdInIdInInInIdIndiAnIdInIndication (String ID, String RootCauseInditifié, Solution SolutionImplégement, Date de chaîne) {this.id = ID; cela.rootcauseIdentifié = rootcause identifié; cette.SeubleImplemented = SolutionImplégement; cela.Date = date; }


Pouvoir, je ne veux pas toutes les données du côté de l'API, je n'ai besoin que d'imprimer root_cause_identified, solution_implementalé, implémentée_dat e dans rootcausemodel


Et maintenant, mon application est couru mais jette une exception quelque chose a mal tourné


"Index 1 hors de portée [0..1)" Ceci le message


S'il vous plaît aidez-moi mon frère.


Vérifiez le changement de réponse. Sur les données de votre modèle que vous devez faire vous-même.


Mais un autre problème trouvé, tangible_benefits, intangible_benefits, total_annual_savings. Ce champ n'est pas imprimé


J'espère que vous avez la réponse réelle, l'impression et l'affichage à votre écran peuvent être un problème différent.


Je souhaite imprimer cet article uniquement en frappant API {"Statut": "Succès", "StatusCode": 200, "Message": "Enregistrement trouvé avec succès.", "Données": {"TANGIBLE_BENEFITS": "DS1351GSGHSDH353535535" intangible_benefits ":" shwryw24y43rwehdg135313513 "," total_annual_savings ":" 45135432 "," root_cause_identification ": [{" root_cause_identifiée ":" efficacité "," solution_implétée ":" efficacité "," implémente_date ":" 14-01-2020 "}] }} et un autre problème mon dailog.show continue à montrer, je pense que les données ne vont pas chercher pourquoi


S'il vous plaît aidez-moi mon frère



0
votes

C'est la bonne réponse. xxx


0 commentaires