如何使用Volley解析Array中的JSON Array?

时间:2018-11-24 03:45:31

标签: android android-studio

我正在尝试从我的网站解析json。

JSON: https://www.yemeklerimiz.com/?json=get_category_posts&id=6

json中有2个数组。我无法解析posts数组,因为在出​​现category数组之前。

我的排球:

 public void getPosts() {
    String url = Constant.baseUrl+"?json=get_category_posts&id="+getIntent().getStringExtra("CAT_ID");
    StringRequest request = new StringRequest(url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                JSONObject jsonObject = new JSONObject(response);
                JSONArray  datas = jsonObject.getJSONArray("0");
                for (int i = 0; i < datas.length(); i++) {
                    PostsModel postsModel = new PostsModel();
                    JSONObject jo = datas.getJSONObject(i);
                    String id = jo.getString("id");
                    String url = jo.getString("url");
                    String title = jo.getString("title");
                    Log.d("IMAGEUR", url);
                    postsModel.setID(id);
                    postsModel.setImageURL(url);
                    postsModel.setTitle(title);
                    postsModelArrayList.add(postsModel);
                    postsAdapter.notifyDataSetChanged();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });

    RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
    requestQueue.add(request);
}

这不起作用。我该怎么做才能获得posts数组中的JSONObject?

2 个答案:

答案 0 :(得分:0)

使用JSON工具(例如GSON或LoganSquare,...)非常简单。您必须首先创建一个带有注释的字段的模型,然后创建一个构建器,最后将您的原始JSON字符串转换为模型,

您可以在this link中看到一个示例;

我建议改用Volley,因为它比Volley非常简单和快捷

答案 1 :(得分:0)

虽然我同意saeedata的回答,但我想向您解释如何使此代码在当前状态下运行而无需翻新。我认为它将更好地帮助您了解JSON的工作原理。

所以您在这里是: 响应的主要JSON对象,我们可以将其视为根。 在此“响应” JSON对象中,您具有诸如“ count”和“ pages”之类的字段,还有另一个名为“ posts”的JSON数组。此“帖子”字段本身包含其他各种JSON对象。

下面的代码片段显示了如何检索posts对象和其中的字段。

     JSONObject responseJSON = new JSONObject(response);
     // Retrieve the posts JSON array from the response
     JSONArray postsArray = jsonObject.getJSONArray("posts");

     for (int i = 0; i < datas.length(); i++) { //loop to iterate in JSON array
            //retrieve the single postObject in array
            JSONObject postObject = postsArray.getJSONObject(i);

            //get fields from the postObject
            String id = postObject.getString("id");
            String url = postObject.getString("url");
            String title = postObject.getString("title");
            Log.d("Title for " + i.toString(), title);
     }

输出如下:

0的标题:UnsuzŞekersiz芝士蛋糕
1标题:HurmalıŞekersizBrowni
2标题:KırmızıMeyveli Pratik芝士蛋糕
3名:Tropikal Blondie
4的标题:PalmsizŞekersizÇikolatalıMuzlu Kek
5位标题:星巴克HavuçluKek
6的标题:ÇikolatalıDondurma
标题7:莎莉·赫尔瓦斯