I want to loop through the questionnaires by using the for loop to set the value of the EMAIL_TO_CLIENT_IND.
The value inside the “path” is QUESTIONNAIRES/SUB_QUESTION/EMAIL_TO_CLIENT_IND. The first “if” is if the level path in JSON is just one Ex. “Questionnaires”. And the “else” is for the path more than 1 Ex. “Questionnaires/Question”.
My current idea is put the jObject.getJSONObject() inside the “else” for loop.
Advertisement
Answer
You can use the JSONArray as follows
String json="{"QUESTIONNAIRES":[{n" + " "SUB_QUESTION":[{n" + " "EMAIL_TO_CLIENT_IND":"N"n" + " }]n" + "}]}"; try { JSONObject mainObject=new JSONObject(json); JSONArray questionnairesArray=mainObject.getJSONArray("QUESTIONNAIRES"); for (int i=0;i<questionnairesArray.length();i++){ JSONObject questionnairesObject= (JSONObject) questionnairesArray.get(i); JSONArray subQuestionArray=questionnairesObject.getJSONArray("SUB_QUESTION"); for (int j=0;j<subQuestionArray.length();j++){ JSONObject subQuestionObject= (JSONObject) subQuestionArray.get(i); subQuestionObject.put("EMAIL_TO_CLIENT_IND","Y"); } } Log.e("Output",mainObject.toString()); } catch (JSONException e) { Log.e("Exception",e.getMessage()); }
Edited
can be solved using GSON library also
//frame data classes class Response { @SerializedName("QUESTIONNAIRES") private List<Questionaire> questionaireList; public List<Questionaire> getQuestionaireList() { return questionaireList; } public void setQuestionaireList(List<Questionaire> questionaireList) { this.questionaireList = questionaireList; } } class Questionaire { @SerializedName("SUB_QUESTION") private List<SubQuestion> subQuestionList; public List<SubQuestion> getSubQuestionList() { return subQuestionList; } public void setSubQuestionList(List<SubQuestion> subQuestionList) { this.subQuestionList = subQuestionList; } } class SubQuestion { @SerializedName("EMAIL_TO_CLIENT_IND") private String emailToClientId; public String getEmailToClientId() { return emailToClientId; } public void setEmailToClientId(String emailToClientId) { this.emailToClientId = emailToClientId; } } //loop through data using GSON Gson gson = new Gson(); String json = "{"QUESTIONNAIRES":[{n" + " "SUB_QUESTION":[{n" + " "EMAIL_TO_CLIENT_IND":"N"n" + " }]n" + "}]}"; Response response = gson.fromJson(json, Response.class); for (Questionaire questionnaire : response.getQuestionaireList()) { for (SubQuestion subQuestion : questionnaire.getSubQuestionList()) { subQuestion.setEmailToClientId("Y"); } } Log.e("Output", gson.toJson(response));