在android中使用截击解析JSONObject中的JSONArray

在android中使用截击解析JSONObject中的JSONArray,android,arrays,json,android-volley,jsonobject,Android,Arrays,Json,Android Volley,Jsonobject,我在这里遇到了麻烦 在服务器端有一些json代码。。。这里是json的一部分 { “状态”:“确定”, “计数”:10, “总数”:88, “页数”:9页, “员额”: [{ “id”:1530, “类型”:“职位”, “slug”:“slug”, “url”:“url”, “状态”:“发布”, “头衔”:“头衔”, “头衔”:“某物”, “内容”:“部分内容”, “修改”:“2016-05-22 20:21:47”, “类别”:[{“诸如此类”:“诸如此类”}] }] }这是打字错误还是什么

我在这里遇到了麻烦 在服务器端有一些json代码。。。这里是json的一部分

{
“状态”:“确定”,
“计数”:10,
“总数”:88,
“页数”:9页,
“员额”:
[{
“id”:1530,
“类型”:“职位”,
“slug”:“slug”,
“url”:“url”,
“状态”:“发布”,
“头衔”:“头衔”,
“头衔”:“某物”,
“内容”:“部分内容”,
“修改”:“2016-05-22 20:21:47”,
“类别”:[{“诸如此类”:“诸如此类”}]
}]

}
这是打字错误还是什么,但您的JSON无效您在这里有两个双引号
“url”:“url”
。只需移除一个

只要这样做:

JsonObjectRequest obreq = new JsonObjectRequest(Request.Method.GET, url, new

            Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONArray obj = response.getJSONArray("posts");

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

                            JSONObject jsonObject = obj.getJSONObject(i);

                            int id = jsonObject.getInt("id");

                            String type = jsonObject.getString("type");

                            // retrieve the values like this so on..

                        }

                    }
                    catch (JSONException e) {

                        e.printStackTrace();
                    }
                }
            },null);
JsonObjectRequest obreq=newjsonobjectrequest(Request.Method.GET,url,new
Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONArray obj=response.getJSONArray(“posts”);
对于(int i=0;i
是打字错误还是其他什么,但您的JSON无效您在此处有两个双引号
“url”:“url”
。只需删除一个即可

只要这样做:

JsonObjectRequest obreq = new JsonObjectRequest(Request.Method.GET, url, new

            Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONArray obj = response.getJSONArray("posts");

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

                            JSONObject jsonObject = obj.getJSONObject(i);

                            int id = jsonObject.getInt("id");

                            String type = jsonObject.getString("type");

                            // retrieve the values like this so on..

                        }

                    }
                    catch (JSONException e) {

                        e.printStackTrace();
                    }
                }
            },null);
JsonObjectRequest obreq=newjsonobjectrequest(Request.Method.GET,url,new
Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONArray obj=response.getJSONArray(“posts”);
对于(int i=0;i
首先创建模型:

public class CategoryModel
{
    public String blah;
}

public class PostModel
{
    public int id;
    public String type;
    public String slug;
    public String url;
    public String status;
    public String title;
    public String title_plain;
    public String content;
    public String modified;
    public List<CategoryModel> categories;
}

public class PostsModel
{
    public String status;
    public int count;
    public int count_total;
    public int pages;
    public List<PostModel> posts;
}
然后在代码中获取对象:

JSONObject json;
Gson gson = new Gson();
            try {
                json = new JSONObject(yourJsonString)
                PostsModel result = gson.fromJson(json, PostsModel.class);
                return result; // this is your deserialized response object
            }catch(Exception e){
            }
截击: 应用程序内类:

private VolleyServiceSingleton mVolleySingleton;
private RequestQueue mVolleyApiClient;
创建时:

mVolleySingleton = VolleyServiceSingleton.getInstance();
mVolleyApiClient = mVolleySingleton.gerRequestQueue();
字符串请求:

class VolleyStringRequest extends StringRequest
    {
        private Map<String, String> mParams;
        public VolleyStringRequest(int method, String url, Response.Listener<String> listener, Response.ErrorListener errorListener, Map<String, String> requestParams) {
            super(method, url, listener, errorListener);
            mParams = requestParams;
            afterRequestErrorRunnable = null;
            Log.e("Request",url);
        }

        @Override
        protected VolleyError parseNetworkError(VolleyError volleyError) {
            if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){
                try {
                    Log.e("errorResponse", new String( volleyError.networkResponse.data, "utf-8" ));
                }catch(Exception e){

                }


            }
            return super.parseNetworkError(volleyError);
        }

        @Override
        public RetryPolicy getRetryPolicy() {
            DefaultRetryPolicy retryPolicy = new DefaultRetryPolicy(
                    TIMEOUT_IN_MILLISECONDS,
                    DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
            return retryPolicy;
        }

        @Override
        public Map getHeaders() throws AuthFailureError {
            Map headers = new HashMap();
            headers.put("Accept-Charset","utf-8");
            //headers.put("Accept", RITEAID_HTTP_CONTENT_TYPE);
            return headers;
        }

        @Override
        public Map<String, String> getParams() {
            return mParams;
        }

    }
class-VolleyStringRequest扩展了StringRequest
{
私人地图;
publicVolleyStringRequest(int方法、字符串url、Response.Listener、Response.ErrorListener ErrorListener、MapRequestParams){
super(方法、url、侦听器、errorListener);
mParams=请求参数;
afterRequestErrorRunnable=null;
Log.e(“请求”,url);
}
@凌驾
受保护的截击错误解析NetworkError(截击错误截击错误){
if(volleyError.networkResponse!=null&&volleyError.networkResponse.data!=null){
试一试{
Log.e(“errorResponse”,新字符串(volleyError.networkResponse.data,“utf-8”);
}捕获(例外e){
}
}
返回super.parseNetworkError(截击错误);
}
@凌驾
公共RetryPolicy getRetryPolicy(){
DefaultRetryPolicy retryPolicy=新的DefaultRetryPolicy(
超时(以毫秒为单位),
DefaultRetryPolicy.DEFAULT\u最大重试次数,
DefaultRetryPolicy.DEFAULT\u BACKOFF\u MULT);
退货政策;
}
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map headers=newhashmap();
headers.put(“接受字符集”、“utf-8”);
//headers.put(“接受”,RITEAID\u HTTP\u CONTENT\u TYPE);
返回标题;
}
@凌驾
公共映射getParams(){
返回内存;
}
}
和请求(必须自定义):

HashMap paramMap=newhashmap();
paramMap.put(“在用户名电子邮件中签名”,Utils.nulltoString(用户名));
paramMap.put(“在密码中签名”,密码!=null?Utils.passwordConvert(密码):”);
paramMap.put(“key”,Constants.API_key);
mResponseHandler=getResponseHandler(requestUrl,positiveResponseFunc,inClass);
VolleyStringRequest request=新的VolleyStringRequest(request.Method.POST、getFinalUrl(requestUrl,null)、getResponseHandler(requestUrl,positiveResponseFunc,inClass)、createErrorListener(context,progress)、paramMap);
请求。设置策略(mRetryPolicy);
request.setTag(request_TAG);
mVolleyApiClient.add(请求);
首先创建模型:

public class CategoryModel
{
    public String blah;
}

public class PostModel
{
    public int id;
    public String type;
    public String slug;
    public String url;
    public String status;
    public String title;
    public String title_plain;
    public String content;
    public String modified;
    public List<CategoryModel> categories;
}

public class PostsModel
{
    public String status;
    public int count;
    public int count_total;
    public int pages;
    public List<PostModel> posts;
}
然后在代码中获取对象:

JSONObject json;
Gson gson = new Gson();
            try {
                json = new JSONObject(yourJsonString)
                PostsModel result = gson.fromJson(json, PostsModel.class);
                return result; // this is your deserialized response object
            }catch(Exception e){
            }
截击: 应用程序内类:

private VolleyServiceSingleton mVolleySingleton;
private RequestQueue mVolleyApiClient;
创建时:

mVolleySingleton = VolleyServiceSingleton.getInstance();
mVolleyApiClient = mVolleySingleton.gerRequestQueue();
字符串请求:

class VolleyStringRequest extends StringRequest
    {
        private Map<String, String> mParams;
        public VolleyStringRequest(int method, String url, Response.Listener<String> listener, Response.ErrorListener errorListener, Map<String, String> requestParams) {
            super(method, url, listener, errorListener);
            mParams = requestParams;
            afterRequestErrorRunnable = null;
            Log.e("Request",url);
        }

        @Override
        protected VolleyError parseNetworkError(VolleyError volleyError) {
            if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){
                try {
                    Log.e("errorResponse", new String( volleyError.networkResponse.data, "utf-8" ));
                }catch(Exception e){

                }


            }
            return super.parseNetworkError(volleyError);
        }

        @Override
        public RetryPolicy getRetryPolicy() {
            DefaultRetryPolicy retryPolicy = new DefaultRetryPolicy(
                    TIMEOUT_IN_MILLISECONDS,
                    DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
            return retryPolicy;
        }

        @Override
        public Map getHeaders() throws AuthFailureError {
            Map headers = new HashMap();
            headers.put("Accept-Charset","utf-8");
            //headers.put("Accept", RITEAID_HTTP_CONTENT_TYPE);
            return headers;
        }

        @Override
        public Map<String, String> getParams() {
            return mParams;
        }

    }
class-VolleyStringRequest扩展了StringRequest
{
私人地图;
publicVolleyStringRequest(int方法、字符串url、Response.Listener、Response.ErrorListener ErrorListener、MapRequestParams){
super(方法、url、侦听器、errorListener);
mParams=请求参数;
afterRequestErrorRunnable=null;
Log.e(“请求”,url);
}
@凌驾
受保护的截击错误解析NetworkError(截击错误截击错误){
if(volleyError.networkResponse!=null&&volleyError.networkResponse.data!=null){
试一试{
Log.e(“errorResponse”,新字符串(volleyError.networkResponse.data,“utf-8”);
}捕获(例外e){
}
}
返回super.parseNetworkError(截击错误);
}
@凌驾
公众的