Тип JSONArray не може бути перетворений у JSONObject

When I call my service web i have this exception: org.json.JSONException:Value[{}] of type org.json.JSONArray cannot be converted to JSONObject

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

private void jsonParse(){
        String url="http://192.168.56.1:8095/rest/workouts/all";
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("");

                            for(int i = 0; i < jsonArray.length(); i++) {
                                JSONObject w = jsonArray.getJSONObject(i);

                                String title = w.getString("title");
                                String goal = w.getString("goal");

                                txtv.append(title + ", " + goal +"\n\n");
                            }
                        ...
</div> </div>

До речі, це формат JSON

[{"id":"1","title":"title","goal":"goal","exercice":"Exercice 
1","difficulty":"Beginner","duration":"3","image":"..","description":"..."},]
0
Змініть JSONObject на JSONArray у слухачеві відповіді
додано Автор Samuel Robert, джерело
Ви повинні використовувати JsonArrayRequest замість JsonObjectRequest
додано Автор Savin Sharma, джерело

5 Відповіді

Ваш відповідь json є насправді JsonArray, тому вам потрібно змінити код на:

private void jsonParse(){
    String url="http://192.168.56.1:8095/rest/workouts/all";
    JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null,
            new Response.Listener() {
                @Override
                public void onResponse(JSONArray response) {
                    try {


                        for(int i = 0; i < response.length(); i++) {
                            JSONObject w = jsonArray.getJSONObject(i);

                            String title = w.getString("title");
                            String goal = w.getString("goal");

                            txtv.append(title + ", " + goal +"\n\n");
                        }
1
додано

спробуйте це ... Це має бути

JSONArray jsonarray = new JSONArray(response);

і потім

for(int i=0; i < jsonarray.length(); i++) {
   JSONObject jsonobject = jsonarray.getJSONObject(i);

   //your code
}
0
додано

Спробуйте це

try{

        JSONArray jsonArray = new JSONArray(response.string());
        for (int i=0;i
0
додано

Хоча відповіді можуть обробляти вашу справу, але, дивлячись на ваш JSON, це, мабуть, масив, а не об'єкт, правильний формат вашого JSON може бути таким:

{"id":"1","title":"title","goal":"goal","exercice":"Exercice1","difficulty":"Beginner","duration":"3","image":"..","description":"..."}

Which have no "[", "]" and ",". So here's my solution, if it's expected to receive just a single Object all the time, you should change your API, sending you just an object as I mentioned above, otherwise, that "," at the end is incorrect for an array having just one single item, and anyhow, you have to change your model to except an array [which you can declare it as a list like: List myModelList] so that the parser will work fine.

0
додано

Спробуйте

 JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
                    Request.Method.GET,
                    url,
                    null,
                    new Response.Listener() {
                        @Override
                        public void onResponse(JSONArray response) {

                            for(int i = 0; i < response.length(); i++) {
                            JSONObject w = response.getJSONObject(i);

                            String title = w.getString("title");
                            String goal = w.getString("goal");

                            txtv.append(title + ", " + goal +"\n\n");
                             }

                            }catch (JSONException e){
                                e.printStackTrace();
                            }
                        }
                    },
                    new Response.ErrorListener(){
                        @Override
                        public void onErrorResponse(VolleyError error){
                           //Do something when error occurred

                        }
                    }
            );
0
додано
ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram

android_jobs_ua
android_jobs_ua
120 учасників

Публикуем вакансии и запросы на поиск работы по направлению Android. Здесь всё: full-time, part-time, remote и разовые подработки.

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.