Java 下面是异步任务,但出于某种原因,它一直说我的JSON数组不能应用于JSONarray[]?

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>

我在下面创建了一个异步任务,但出于某种原因,它一直说我的JSON数组不能应用于
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) {
        }
    });