1

Hi i was trying to parse a json array inside another json array. Help me with this.

my Json Array is

 "results":[ 
 { 
 "percentcompleted":0,
 "requirers":[ 
 { 
 "activityContext":null,
 "auditReason":null,
 "assignee":{ 
 "sourceType":"InternalPerson",
 "activitySourceType":{ 
 "listId":"sysli000000000003037",
 "sourceType":0,
 "key":"0",
 "displayName":"Person"
 },
 "locale":{ 
 "id":"local000000000000001",
 "displayName":"English"
 },
 "id":"emplo000000006156648",
 "displayName":"Venkat Rao"
 },
 "targetDate":null,
 "assignment":{ 
 "id":"stcur000000000003182",
 "displayName":null
 },
 "learningEvent":{ 
 "id":"curra000000000003001",
 "displayName":"Studieplan_test för OKQ8"
 },
 "jobTypeId":null,
 "listIds":null,
 "assignedOn":1502084325000,
 "source":{ 
 "sourceType":"InternalPerson",
 "activitySourceType":{ 
 "listId":"sysli000000000003037",
 "sourceType":0,
 "key":"0",
 "displayName":"Person"
 },
 "locale":{ 
 "id":"local000000000000001",
 "displayName":"English"
 },
 "id":"emplo000000006156648",
 "displayName":"Venkat Rao"
 },
 "required":true,
 "actions":null,
 "id":"currh000000000014343"
 }
 ],
 "basicdetail":{ 
 "revokedOn":null,
 "need_recert":false,
 "curriculum":{ 
 "id":"curra000000000003001",
 "displayName":"Studieplan_test för OKQ8"
 },
 "recert_window_starts_on":null,
 "createdBy":"vrao",
 "updatedBy":"vrao",
 "createdOn":1502084325000,
 "updatedOn":1508357353000,
 "status":{ 
 "intStatus":400,
 "description":"Assigned",
 "displayName":"Assigned"
 },
 "type":"CURRICULUM",
 "path":{ 
 "id":"track000000000003081",
 "displayName":"Studieplan"
 },
 "acquiredOn":null,
 "assignee":{ 
 "sourceType":"InternalPerson",
 "activitySourceType":{ 
 "listId":"sysli000000000003037",
 "sourceType":0,
 "key":"0",
 "displayName":"Person"
 },
 "locale":{ 
 "id":"local000000000000001",
 "displayName":"English"
 },
 "id":"emplo000000006156648",
 "displayName":"Venkat Rao"
 },
 "targetDate":null,
 "startedOn":null,
 "assignedOnDate":1502084325000,
 "heldCertNo":"00003787",
 "owner":{ 
 "sourceType":"InternalPerson",
 "activitySourceType":{ 
 "listId":"sysli000000000003037",
 "sourceType":0,
 "key":"0",
 "displayName":"Person"
 },
 "locale":{ 
 "id":"local000000000000001",
 "displayName":"English"
 },
 "id":"emplo000000006156648",
 "displayName":"Venkat Rao"
 },
 "id":"stcur000000000003182",
 "assigneeAdditionalDetails":{ 
 "person_no":"VRAO",
 "username":"VRAO"
 }
 },
 "isgranted":null
 },

and my Code to parse the above data is

public class CurriculaParser {
public ArrayList<CurriculaData> getData(String response)
{
 ArrayList<CurriculaData> dataList = new ArrayList<>();
 try {
 JSONObject mainObj = new JSONObject(response);
 JSONArray array = mainObj.getJSONArray("results");
 CurriculaData data;
 for(int i = 0;i<array.length();i++)
 {
 data = new CurriculaData();
 JSONObject resObj = array.getJSONObject(i);
 JSONArray reqArray = resObj.getJSONArray("requires");
 for( int j =0;j<reqArray.length();j++) {
 JSONObject reqObj = reqArray.getJSONObject(j);
 JSONObject innerObj = reqObj.getJSONObject("learningEvent");
 data.setTitle(innerObj.getString("displayName"));
 data.setAssignedOn(reqObj.getString("assignedOn"));
 }
 JSONArray basicDetailArray = resObj.getJSONArray("basicdetail");
 for(int k=0;k<basicDetailArray.length();k++) {
 JSONObject basicDetailObj = basicDetailArray.getJSONObject(k);
 JSONObject statusObj = basicDetailObj.getJSONObject("status");
 data.setStatus(statusObj.getString("displayName"));
 data.setAcquiredOn(basicDetailObj.getString("acquiredOn"));
 JSONObject assignObj = basicDetailObj.getJSONObject("assignee");
 data.setAssignedBy(assignObj.getString("displayName"));
 }
 dataList.add(data);
 }
 } catch (Exception e) {
 e.printStackTrace();
 }
 return dataList;
}

and finally i got error like

org.json.JSONException: No value for requires

let me know the error what i made and iam a beginner in dealing with jsonarray inside another jsonarray

Phantômaxx
38.1k21 gold badges88 silver badges122 bronze badges
asked Nov 29, 2017 at 11:31
2
  • JSON invalid. post proper json Commented Nov 29, 2017 at 11:33
  • invalid json format check here jsonlint.com Commented Nov 29, 2017 at 11:33

2 Answers 2

1

org.json.JSONException: No value for requires

JSONException

  • KEY mismatches on lookups

You should pass requirers instead of requires.

 JSONArray reqArray = resObj.getJSONArray("requirers");
answered Nov 29, 2017 at 11:34
Sign up to request clarification or add additional context in comments.

Comments

1

fixed the requires TYPO error

public class CurriculaParser {
public ArrayList<CurriculaData> getData(String response)
{
ArrayList<CurriculaData> dataList = new ArrayList<>();
try {
 JSONObject mainObj = new JSONObject(response);
 JSONArray array = mainObj.getJSONArray("results");
 CurriculaData data;
 for(int i = 0;i<array.length();i++)
 {
 data = new CurriculaData();
 JSONObject resObj = array.getJSONObject(i);
 JSONArray reqArray = resObj.getJSONArray("requirers");
 for( int j =0;j<reqArray.length();j++) {
 JSONObject reqObj = reqArray.getJSONObject(j);
 JSONObject innerObj = reqObj.getJSONObject("learningEvent");
 data.setTitle(innerObj.getString("displayName"));
 data.setAssignedOn(reqObj.getString("assignedOn"));
 }
 JSONArray basicDetailArray = resObj.getJSONArray("basicdetail");
 for(int k=0;k<basicDetailArray.length();k++) {
 JSONObject basicDetailObj = basicDetailArray.getJSONObject(k);
 JSONObject statusObj = basicDetailObj.getJSONObject("status");
 data.setStatus(statusObj.getString("displayName"));
 data.setAcquiredOn(basicDetailObj.getString("acquiredOn"));
 JSONObject assignObj = basicDetailObj.getJSONObject("assignee");
 data.setAssignedBy(assignObj.getString("displayName"));
 }
 dataList.add(data);
 }
} catch (Exception e) {
 e.printStackTrace();
}
answered Nov 29, 2017 at 11:44

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.