What I want:
Get the values of a JSONObject in a csv file.
I guess this question is somewhat near to what i want, but I couldn't get the answer from here.
What I have:
The following json:
{
"day_entries": [
{
"project_id": "5198193",
"project": "14775",
"user_id": 508343,
"spent_at": "2016-01-27",
"task_id": "2892243",
"task": "Backend Programming",
"client": "Apple",
"id": 420923769,
"notes": "",
"started_at": "12:00pm",
"ended_at": "2:00pm",
"created_at": "2016-01-27T21:30:00Z",
"updated_at": "2016-01-27T21:30:00Z",
"hours_without_timer": 2,
"hours": 2
}
],
"for_day": "2016-01-27"
}
The code I have written for this is:
/**
* Converts the day_entries JSONObject to csv string values and returns as ArrayList
* @param dayEntries
* @return null if there is any error parsing TimeSheet JSON response
*/
public static ArrayList<String> writeTimeSheetJSONCDR(JSONArray dayEntries) {
try {
ArrayList<String> cdrRows = new ArrayList<String>();
StringBuilder cdrEntry = new StringBuilder();
for (int i = 0; i < dayEntries.length(); i++) {
JSONObject jsonDayEntry = (JSONObject) dayEntries.get(i);
cdrEntry.append(jsonDayEntry.get("for_day")).append(",");
cdrEntry.append(jsonDayEntry.get("project_id"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("project"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("user_id"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("spent_at"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("task_id"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("task"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("client"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("id"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("notes"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("started_at"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("ended_at"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("created_at"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("updated_at"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("hours_without_timer"));
cdrEntry.append(",");
cdrEntry.append(jsonDayEntry.get("hours"));
cdrRows.add(cdrEntry.toString());
}
System.out.println("CDREntry: " + cdrEntry.toString());
return cdrRows;
} catch (Exception exp) {
System.err.println("Error parsing json" + exp);
return null;
}
}
My Question:
Is there a way to get the subsequent childs as array without specifying the keys individually and I don't have to mention all the keys like I have done?