2016-12-27 4 views
-4

Я разобрал ответ JSON, используя Volley library как сделано в this video. Но я получаю сообщение об ошибке. Ошибка:Как разобрать JSON с использованием библиотеки volley android

E/VOLLEY: ERROR

Может кто-нибудь мне помочь, пожалуйста? Я не знаю, в чем проблема.

EDIT: Добавлен код

package com.example.hello.Project; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class Activity1 extends Activity { 

Button start; 
TextView textView; 
RequestQueue requestQueue; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity1); 

start = (Button) findViewById(R.id.btn); 
textView = (TextView) findViewById(R.id.textView2); 
requestQueue = Volley.newRequestQueue(this); 

start.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 

     JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, "http://example.com/abc.json", 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 

         try { 
          JSONArray jsonArray = response.getJSONArray("abc"); 

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

           JSONObject student = jsonArray.getJSONObject(i); 

           String a= student.getString("a"); 
           String b= student.getString("b"); 
           String c= student.getString("c"); 
           String d= student.getString("d"); 

           textView.append(a+" \n"+b+" \n"+c+" \n "+d+" \n"); 

          } 
         } catch (JSONException e){ 
          e.printStackTrace(); 
         } 
        } 
       }, 

       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Log.e("VOLLEY","ERROR"); 
        } 
       } 


     ); 

     requestQueue.add(jsonObjectRequest); 
    } 
}); 
} 
} 

Это код.

+0

Можете ли вы опубликовать код, который вы пробовали? В противном случае мы не можем вам помочь – Isaac

+0

Поскольку это ошибка ответа, это не имеет никакого отношения к JSON или его правильному формату. Не могли бы вы изменить свой журнал ошибок на это: Log.e («VOLLEY», error.getMessage()); и добавить то, что говорит журнал? Это поможет выявить проблему. –

ответ

1

Это не поможет устранить вашу проблему, но это скажет вам, что происходит не так.

Изменить

new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Log.e("VOLLEY","ERROR"); 
       } 
      } 

в

new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Log.e("VOLLEY", error.toString()); 
       } 
      } 

Таким образом, это будет на самом деле сказать, что ошибка, а не просто "ERROR".

Вывод состоял в том, что образец JSON был недействительным и, следовательно, не читался правильно.

+0

Это не работает. У вас есть другая идея решить проблему? – android

+0

Это должно было дать вам другую ошибку, чем «E/VOLLEY: ERROR» - что он сказал вместо этого? –

+0

Нет, это не проблема с вашей идеей. Когда я пишу вашу идею, ошибка красная подчеркнута. Я не могу запустить приложение – android

0

В дополнение к ответу @ TJ_ вам также необходимо добавить запятую между каждым атрибутом.

Вы имели (который недействителен):

{ 
    "buli1617sp": [ 
    { 
     name: "Embolo" 
     vereine: "Von Basel zu Schalke" 
     geld: "29 Mio Euro" 
     datum: "01.08.2016" 
    }, 
    { 
     name: "Coke" 
     vereine: "Von Sevilla zu Schalke" 
     geld: "4 Mio Euro" 
     datum: "02.08.2016" 
    }, 
    { 
     name: "Bentaleb" 
     vereine: "Von Basel zu Schalke" 
     geld: "Leihe mit Kaufoption über 19 Mio Euro" 
     datum: "03.08.2016" 
    } 
    ] 
} 

Правильный JSON:

{ 
    "buli1617sp": [ 
    { 
     "name": "Embolo", 
     "vereine": "Von Basel zu Schalke", 
     "geld": "29 Mio Euro", 
     "datum": "01.08.2016" 
    }, 
    { 
     "name": "Coke", 
     "vereine": "Von Sevilla zu Schalke", 
     "geld": "4 Mio Euro", 
     "datum": "02.08.2016" 
    }, 
    { 
     "name": "Bentaleb", 
     "vereine": "Von Basel zu Schalke", 
     "geld": "Leihe mit Kaufoption über 19 Mio Euro", 
     "datum": "03.08.2016" 
    } 
    ] 
} 

При работе с JSON я предлагаю использовать онлайн JSON парсер, такие как this проверить JSON правильно отформатирована.

+0

Спасибо за помощь! – android

Смежные вопросы