在android中解析JsonArray

时间:2016-10-15 12:24:52

标签: android arrays json

如何解析这个jsonarray“Images”??

我解析了这个json ,,但我无法得到“图片” 它内部的Jsonarray“数据”元素,在图像的每个元素数组中>>>>

这是回应 Json

这是我的代码

                JSONObject responseObject = new JSONObject(response);

                JSONArray newsJsonArray = responseObject.getJSONArray("data");
                final List <AndroidVersion> newsList = new ArrayList <AndroidVersion>();

                newsImages = new ArrayList<String>();
                newsids = new ArrayList<String>();
                newsnames = new ArrayList<String>();
                newshotelsid = new ArrayList<String>();
                newscontents = new ArrayList<String>();
                newstimesto = new ArrayList<String>();
                newscost = new ArrayList<String>();
                newstimesfrom = new ArrayList<String>();
                newscountry = new ArrayList<String>();
                newscity = new ArrayList<String>();
                newstype = new ArrayList<String>();
                newsImages = new ArrayList<String>();

                    for (int j = 0; j < newsJsonArray.length(); j++) {
                        AndroidVersion news = new AndroidVersion();
                        if (newsJsonArray.getJSONObject(j).has("id")) {
                            newsids.add(newsJsonArray.getJSONObject(j).getString("id"));
                        }
                        if (newsJsonArray.getJSONObject(j).has("name")) {
                            news.setName(newsJsonArray.getJSONObject(j).getString("name"));
                            newsnames.add(newsJsonArray.getJSONObject(j).getString("name"));

                        }
                        if (newsJsonArray.getJSONObject(j).has("desc")) {
                            news.setdesc(newsJsonArray.getJSONObject(j).getString("desc")
                                    .replaceAll("<p>", "").replaceAll("<\\/p>\\r\\n", "").replaceAll("&nbsp;", ""));
                            newscontents.add(newsJsonArray.getJSONObject(j).getString("describtion"));
                        }

                        if (newsJsonArray.getJSONObject(j).has("country")) {
                            news.setcountry(newsJsonArray.getJSONObject(j).getString("country"));
                            newscountry.add(newsJsonArray.getJSONObject(j).getString("country"));
                        }

                        if (newsJsonArray.getJSONObject(j).has("city")) {
                            news.setcity(newsJsonArray.getJSONObject(j).getString("city"));
                            newscity.add(newsJsonArray.getJSONObject(j).getString("city"));
                        }

                        if (newsJsonArray.getJSONObject(j).has("date_from")) {
                            news.setdate_from(newsJsonArray.getJSONObject(j).getString("date_from"));
                            newstimesfrom.add(newsJsonArray.getJSONObject(j).getString("date_from"));
                        }
                        if (newsJsonArray.getJSONObject(j).has("date_to")) {
                            news.setdate_to(newsJsonArray.getJSONObject(j).getString("date_to"));
                            newstimesto.add(newsJsonArray.getJSONObject(j).getString("date_to"));
                        }
                        if (newsJsonArray.getJSONObject(j).has("num persons")) {
                            news.sethotel_id(newsJsonArray.getJSONObject(j).getString("num persons"));
                            newshotelsid.add(newsJsonArray.getJSONObject(j).getString("num persons"));
                        }
                        if (newsJsonArray.getJSONObject(j).has("price")) {
                            news.setprice(newsJsonArray.getJSONObject(j).getString("price"));
                            newscost.add(newsJsonArray.getJSONObject(j).getString("price"));
                        }
                        if (newsJsonArray.getJSONObject(j).has("images")) {
                            news.setImage(newsJsonArray.getJSONObject(j).getString("images"));
                            newsImages.add(newsJsonArray.getJSONObject(j).getString("images"));
                        }
                        newsList.add(news);
                    }

3 个答案:

答案 0 :(得分:0)

我强烈建议使用Gson解析它。

创建一个响应对象,其结构与json响应匹配。然后,您可以使用单个对象,而无需将其创建为部分。

答案 1 :(得分:0)

更改此部分:

 if (newsJsonArray.getJSONObject(j).has("images")) {
     news.setImage(newsJsonArray.getJSONObject(j).getString("images"));
     newsImages.add(newsJsonArray.getJSONObject(j).getString("images"));
 }

为:

if(newsJsonArray.getJSONObject(j).getJSONArray("images") != null) {
    JSONArray jArray = newsJsonArray.getJSONObject(j).getJSONArray("images");
    for (int k=0; k<jArray.length(); k++) {
         news.setImage(jArray.getString(k));
         newsImages.add(jArray.getString(k));
    }
}  

答案 2 :(得分:0)

您可以使用JSONArray中的直接字符串对象,如下所示:

JSONArray array = object.getJSONArray("images");

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

String image = array.getString(i);

}