我使用Volley library
解析了JSON响应,如this video中所做。但是我收到了一个错误。错误是:
是的,有人可以帮助我吗?我不知道问题是什么。E / VOLLEY:ERROR
编辑:添加了代码
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 :(得分: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());
}
}
这样它实际上会说出错误是什么,而不只是&#34;错误&#34;。
结论是样本JSON无效,因此无法正确读取。
答案 1 :(得分: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格式是否正确。