Statement – While working with REST apis, most of the time we would be expecting the clean JSON response from the API. But few time we get the unstructured JSON response like below in case of children array –
{
“_page”: {
“start”: 0,
“next”: 12,
“count”: 2
}
“children”: [
“{\”_attachments\”:\”attachments/\”,\”_rid\”:\”wEIcANyrmAULAAAAAAAAAA==\”,\”id\”:\”11\”,\”_self\”:\”dbs/wEIcAA==/colls/wEIcANyrmAU=/docs/wEIcANyrmAULAAAAAAAAAA==/\”,\”value\”:\”Vanessa\”,\”key\”:\”38\”,\”_etag\”:\”\\”0c0054c7-0000-0000-0000-59ca35ab0000\\”\”,\”_ts\”:1506424239}”,
“{\”_attachments\”:\”attachments/\”,\”_rid\”:\”wEIcANyrmAUMAAAAAAAAAA==\”,\”id\”:\”12\”,\”_self\”:\”dbs/wEIcAA==/colls/wEIcANyrmAU=/docs/wEIcANyrmAUMAAAAAAAAAA==/\”,\”value\”:\”Neal\”,\”key\”:\”13\”,\”_etag\”:\”\\”0c0056c7-0000-0000-0000-59ca35ab0000\\”\”,\”_ts\”:1506424239}”
]
}
So to avoid this, we just need to take care of few things in our implementation –
- In the Root class object, use JSONArray object instead of List of String or Object like below –
public class PageResponse {
@JsonProperty(“_page”)
private Pagination page;
@JsonProperty(“records”)
private JSONArray records = null;
}
- Wherever you are setting this JSONArray, try to set it by the following piece of code –
List<Object> finalRes = new ArrayList<Object>();
JSONParser parser = new JSONParser();
JSONArray finalJsonArray = (JSONArray) parser.parse(finalRes.toString());
PageResponse pageResponse = new PageResponse();
pageResponse.setRecords(finalJsonArray);
In this way, you would be getting the clean JSON response from your REST API given below –
{ "_page": { "start": 0, "next": 13, "count": 3 }, "records": [ { "_attachments": "attachments/", "_rid": "wEIcANyrmAULAAAAAAAAAA==", "id": "11", "_self": "dbs/wEIcAA==/colls/wEIcANyrmAU=/docs/wEIcANyrmAULAAAAAAAAAA==/", "value": "Vanessa", "key": "38", "_etag": "\"0c0054c7-0000-0000-0000-59ca35ab0000\"", "_ts": 1506424239 }, { "_attachments": "attachments/", "_rid": "wEIcANyrmAUMAAAAAAAAAA==", "id": "12", "_self": "dbs/wEIcAA==/colls/wEIcANyrmAU=/docs/wEIcANyrmAUMAAAAAAAAAA==/", "value": "Neal", "key": "13", "_etag": "\"0c0056c7-0000-0000-0000-59ca35ab0000\"", "_ts": 1506424239 }, { "_attachments": "attachments/", "_rid": "wEIcANyrmAUNAAAAAAAAAA==", "id": "13", "_self": "dbs/wEIcAA==/colls/wEIcANyrmAU=/docs/wEIcANyrmAUNAAAAAAAAAA==/", "value": "Marguerite", "key": "13", "_etag": "\"0c0058c7-0000-0000-0000-59ca35ab0000\"", "_ts": 1506424239 } ] }
Hope it helps. 🙂