Java 下面是异步任务,但出于某种原因,它一直说我的JSON数组不能应用于JSONarray[]?
我在下面创建了一个异步任务,但出于某种原因,它一直说我的JSON数组不能应用于Java 下面是异步任务,但出于某种原因,它一直说我的JSON数组不能应用于JSONarray[]?,java,android,arrays,json,Java,Android,Arrays,Json,我在下面创建了一个异步任务,但出于某种原因,它一直说我的JSON数组不能应用于JSONarray[]???错误发生在我的AsyncTask中的listblogs=parseJSONResponse(result);这是怎么回事 class YourTask extends AsyncTask<JSONArray, String, ArrayList<Blogs> > { @Override protected ArrayList<Blogs>
JSONarray[]
???错误发生在我的AsyncTask
中的listblogs=parseJSONResponse(result)
;这是怎么回事
class YourTask extends AsyncTask<JSONArray, String, ArrayList<Blogs> > {
@Override
protected ArrayList<Blogs> doInBackground(JSONArray... result) {
listblogs.clear(); // here you clear the old data
listblogs=parseJSONResponse(result);
return listblogs;
}
@Override
protected void onPostExecute(ArrayList<Blogs> blogs) {
mAdapterDashBoard.setBloglist(listblogs);
}
}
private void JsonRequestMethod() {
final long start = SystemClock.elapsedRealtime();
mVolleySingleton = VolleySingleton.getInstance();
//intitalize Volley Singleton request key
mRequestQueue = mVolleySingleton.getRequestQueue();
//2 types of requests an Array request and an Object Request
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, URL_API, (String) null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
System.out.print(response);
listblogs = new YourTask().doInBackground();
listblogs.clear();
listblogs=parseJSONResponse(response);
try {
listblogs = new YourTask().execute().get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println(response);
Log.d("Testing", "Time elapsed: " + (SystemClock.elapsedRealtime() - start));
System.out.println("it worked!!!");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
mRequestQueue.add(request);
}
private ArrayList<Blogs> parseJSONResponse(JSONArray response) {
if (!response.equals("")) {
try {
StringBuilder data = new StringBuilder();
for (int i = 0; i < response.length(); i++) {
JSONObject currentQuestions = response.getJSONObject(i);
String text = currentQuestions.getString("text");
String points = currentQuestions.getString("points");
String ID=currentQuestions.getString("id");
String studentId = currentQuestions.getString("studentId");
String DateCreated=currentQuestions.getString("created");
long time=Long.parseLong(DateCreated.trim());
data.append(text + "\n" + points + "\n");
System.out.println(data);
Blogs blogs = new Blogs();
blogs.setId(ID);
blogs.setMstudentId(studentId);
blogs.setMtext(text);
blogs.setPoints(points);
//The dateCreated was off by 1 hour so 3600000 ms where added=1hour, (UPDATE)
blogs.setDateCreated(getTimeAgo(time));
System.out.println(time + "time");
listblogs.add(blogs);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return listblogs;
}
JSONArray…=JSONArray[],因此使用第一个索引。它会起作用的
@凌驾
受保护的ArrayList doInBackground(JSONArray…args){
listblogs.clear();//在这里可以清除旧数据
listblogs=parseJSONResponse(args[0]);//我认为是您的错误
返回listblogs;
}
事实上JSONArray。。。不是结果,它是AsyncTask的参数
@凌驾
受保护的void onPostExecute(ArrayList结果){
//在这里处理结果
}
为您的任务分类扩展异步任务{
ArrayList Auxarrayist;
@凌驾
受保护的ArrayList doInBackground(JSONArray…结果){
auxArrayList=parseJSONResponse(结果[0]);
返回auxArrayList;
}
@凌驾
受保护的void onPostExecute(ArrayList博客){
mAdapterDashBoard.setBloglist(listblogs);
}
}
私有void JsonRequestMethod(){
最终长启动=SystemClock.elapsedRealtime();
mVolleySingleton=VolleySingleton.getInstance();
//初始化截击单例请求键
mRequestQueue=mVolleySingleton.getRequestQueue();
//两种类型的请求—数组请求和对象请求
JsonArrayRequest=newJSONArrayRequest(request.Method.GET,URL_API,(String)null,new Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
系统输出打印(响应);
试一试{
listblogs.clear();
listblogs=newyourtask().execute(response.get();
}捕捉(中断异常e){
e、 printStackTrace();
}捕获(执行例外){
e、 printStackTrace();
}
System.out.println(响应);
Log.d(“测试”,“经过的时间:”+(SystemClock.elapsedRealtime()-start));
System.out.println(“成功了!!!”;
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
});
mRequestQueue.add(请求);
}
专用ArrayList parseJSONResponse(JSONArray响应){
ArrayList myAuxArrayList=null;
如果(!response.equals(“”){
试一试{
myAuxArrayList=新的ArrayList();
StringBuilder数据=新的StringBuilder();
对于(int i=0;i
复制粘贴并告诉我是否有效请用此方法替换此方法
private ArrayList<Blogs> parseJSONResponse(JSONArray response) {
ArrayList<Blogs> list = new ArrayList<Blogs>();
if (!response.equals("")) {
try {
StringBuilder data = new StringBuilder();
for (int i = 0; i < response.length(); i++) {
JSONObject currentQuestions = response.getJSONObject(i);
String text = currentQuestions.getString("text");
String points = currentQuestions.getString("points");
String ID=currentQuestions.getString("id");
String studentId = currentQuestions.getString("studentId");
String DateCreated=currentQuestions.getString("created");
long time=Long.parseLong(DateCreated.trim());
data.append(text + "\n" + points + "\n");
System.out.println(data);
Blogs blogs = new Blogs();
blogs.setId(ID);
blogs.setMstudentId(studentId);
blogs.setMtext(text);
blogs.setPoints(points);
//The dateCreated was off by 1 hour so 3600000 ms where added=1hour, (UPDATE)
blogs.setDateCreated(getTimeAgo(time));
System.out.println(time + "time");
list.add(blogs);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return list;
private ArrayList parseJSONResponse(JSONArray响应){
ArrayList=新建ArrayList();
如果(!response.equals(“”){
试一试{
StringBuilder数据=新的StringBuilder();
对于(int i=0;i
}看看您的
JSONArrayRequest
代码
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, URL_API, (String) null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
System.out.print(response);
// never call AsyncTask's doInBackground() method like this
//listblogs = new YourTask().doInBackground();
//listblogs.clear();
//listblogs=parseJSONResponse(response);
try {
// You were executing AsyncTask without passing any parameters.
// change this line by this
listblogs = new YourTask().execute(response).get();
// I think this is the only cause
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println(response);
Log.d("Testing", "Time elapsed: " + (SystemClock.elapsedRealtime() - start));
System.out.println("it worked!!!");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
JsonArrayRequest=newjsonarrayrequest(request.Method.GET,URL\u API,(String)null,new Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
系统输出打印(响应);
//不要像这样调用AsyncTask的doInBackground()方法
//listblogs=newyourtask().doInBackground();
//listblogs.clear();
//listblogs=parseJSONResponse(response);
试一试{
//你在执行死刑
class YourTask extends AsyncTask<JSONArray, String, ArrayList<Blogs> > {
ArrayList<Blogs> auxArrayList;
@Override
protected ArrayList<Blogs> doInBackground(JSONArray... result) {
auxArrayList=parseJSONResponse(result[0]);
return auxArrayList;
}
@Override
protected void onPostExecute(ArrayList<Blogs> blogs) {
mAdapterDashBoard.setBloglist(listblogs);
}
}
private void JsonRequestMethod() {
final long start = SystemClock.elapsedRealtime();
mVolleySingleton = VolleySingleton.getInstance();
//intitalize Volley Singleton request key
mRequestQueue = mVolleySingleton.getRequestQueue();
//2 types of requests an Array request and an Object Request
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, URL_API, (String) null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
System.out.print(response);
try {
listblogs.clear();
listblogs = new YourTask().execute(response).get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println(response);
Log.d("Testing", "Time elapsed: " + (SystemClock.elapsedRealtime() - start));
System.out.println("it worked!!!");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
mRequestQueue.add(request);
}
private ArrayList<Blogs> parseJSONResponse(JSONArray response) {
ArrayList<Blogs> myAuxArrayList = null;
if (!response.equals("")) {
try {
myAuxArrayList = new ArrayList<Blogs>();
StringBuilder data = new StringBuilder();
for (int i = 0; i < response.length(); i++) {
JSONObject currentQuestions = response.getJSONObject(i);
String text = currentQuestions.getString("text");
String points = currentQuestions.getString("points");
String ID=currentQuestions.getString("id");
String studentId = currentQuestions.getString("studentId");
String DateCreated=currentQuestions.getString("created");
long time=Long.parseLong(DateCreated.trim());
data.append(text + "\n" + points + "\n");
System.out.println(data);
Blogs blogs = new Blogs();
blogs.setId(ID);
blogs.setMstudentId(studentId);
blogs.setMtext(text);
blogs.setPoints(points);
//The dateCreated was off by 1 hour so 3600000 ms where added=1hour, (UPDATE)
blogs.setDateCreated(getTimeAgo(time));
System.out.println(time + "time");
myAuxArrayList.add(blogs);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return myAuxArrayList;
}
private ArrayList<Blogs> parseJSONResponse(JSONArray response) {
ArrayList<Blogs> list = new ArrayList<Blogs>();
if (!response.equals("")) {
try {
StringBuilder data = new StringBuilder();
for (int i = 0; i < response.length(); i++) {
JSONObject currentQuestions = response.getJSONObject(i);
String text = currentQuestions.getString("text");
String points = currentQuestions.getString("points");
String ID=currentQuestions.getString("id");
String studentId = currentQuestions.getString("studentId");
String DateCreated=currentQuestions.getString("created");
long time=Long.parseLong(DateCreated.trim());
data.append(text + "\n" + points + "\n");
System.out.println(data);
Blogs blogs = new Blogs();
blogs.setId(ID);
blogs.setMstudentId(studentId);
blogs.setMtext(text);
blogs.setPoints(points);
//The dateCreated was off by 1 hour so 3600000 ms where added=1hour, (UPDATE)
blogs.setDateCreated(getTimeAgo(time));
System.out.println(time + "time");
list.add(blogs);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return list;
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, URL_API, (String) null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
System.out.print(response);
// never call AsyncTask's doInBackground() method like this
//listblogs = new YourTask().doInBackground();
//listblogs.clear();
//listblogs=parseJSONResponse(response);
try {
// You were executing AsyncTask without passing any parameters.
// change this line by this
listblogs = new YourTask().execute(response).get();
// I think this is the only cause
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println(response);
Log.d("Testing", "Time elapsed: " + (SystemClock.elapsedRealtime() - start));
System.out.println("it worked!!!");
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});