Ma réponse code Java p>
6 Réponses :
La réponse que vous obtenez est un jsonObject code> pas un
jsonarray code>. p>
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();
}
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 code>,
intangible_benefits code>,
total_annual_savings code > 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?
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(); }
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
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
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(); }
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
Essayez ceci ci-dessous Réponse, ci-dessus selon votre échantillon JSON, vous essayez d'introduire des "données" et "root_cause_identification" à tort
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
Maintenant c'est votre tâche. rootCauseIdentificationArray.getJSONObject (0) est un objet que vous ne pouvez pas lancer comme liste
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
C'est la bonne réponse.
Votre
data code> est l'objet imbriqué réel, pas un tableau