Как спарсить JSON сервера в Java Volley
Как можно спарсить ответ от сервера в Volley get запросе с помощью org.json? В файле содержится информация о категории задачи, а также самих задачах, находящихся в этой категории. Необходимо распарсить названия категорий по двум разным массивам с учётом того, категорий и дочерних задач в ответе будет много. Заранее спасибо.
JSON:
{
"notes":
[
{
"content": "New category",
"color": "#64c4ed",
"childs": [
{
"content": "Тест",
"_id": "5fc145b234f3a7834c1fd17c",
"parent": "5fc1445134f3a7834c1fd178",
"date": "2020-11-27T18:30:10.929Z",
"__v": 0
}
],
"_id": "5fc1445134f3a7834c1fd178",
"owner": "5fc142e026e8f14174dc4bad",
"date": "2020-11-27T18:24:17.000Z",
"__v": 0
},
{
"content": "Эййй",
"color": "#ff6464",
"childs": [
{
"content": "я",
"_id": "5fc1448434f3a7834c1fd17a",
"parent": "5fc1447d34f3a7834c1fd179",
"date": "2020-11-27T18:25:08.625Z",
"__v": 0
},
{
"content": "Тест2",
"_id": "5fc1448b34f3a7834c1fd17b",
"parent": "5fc1447d34f3a7834c1fd179",
"date": "2020-11-27T18:25:15.954Z",
"__v": 0
}
],
"_id": "5fc1447d34f3a7834c1fd179",
"owner": "5fc142e026e8f14174dc4bad",
"date": "2020-11-27T18:25:01.000Z",
"__v": 0
}
]
}
Get запрос:
private void Submit(final String token, final List<String> categories){
String URL = "http://localhost/api/note/";
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject object = new JSONObject(response);
} catch (JSONException e) {
Toast.makeText(getApplicationContext(), "Server error", Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError
{
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "Bearer "+ token);
return headers;
}
@Override
public String getBodyContentType(){return "application/json; charset=utf-8"; }
};
requestQueue.add(stringRequest);
}
Ответы (1 шт):
Автор решения: Crush
→ Ссылка
Я бы распарсил Ваш JSON так:
JSONObject object = new JSONObject("response");
JSONArray notesJsonArray = object.getJSONArray("notes");
for (int i = 0; i < notesJsonArray.length(); i++) {
JSONObject noteJsonObject = notesJsonArray.getJSONObject(i);
// куда-то пишем данные из noteJsonObject
if (noteJsonObject.has("childs")) {
JSONArray childsJsonArray = notesJsonArray.getJSONArray(i);
for (int j = 0; j < childsJsonArray.length(); j++) {
JSONObject childsJsonObject = childsJsonArray.getJSONObject(j);
// куда-то пишем данные из childsJsonObject
}
}
}