我怎么能从json检索这个图像数组?

时间:2017-03-26 09:26:59

标签: android arrays json

我有 json ,我需要从images变量中检索图像数组..

这是我的 json

    {
id: 215,
title: " this is title",
image: "1464958558.jpg",
description: "description",
images: "["1464958558.jpg","1464958559.jpg","1464958561.jpg","1464958563.jpg","1464958564.jpg","1464958568.jpg","1464958569.jpg","1464958570.jpg","1464958573.jpg","1464958574.jpg"]",
user_name: "user name",
telephone: "0123456789"
}

我想检索此图像数组并在网格视图中显示...我在logcat

中找不到任何回复

我的doInBackGround()

 @Override
    protected Integer doInBackground(String... arg0) {
        // Building Parameters
        HttpHandler sh = new HttpHandler();

        // Making a request to url and getting response
        ID = mCursor.getString(ArticleLoader.Query._ID);

        String jsonStr = sh.makeServiceCall(String.valueOf(Config.BASE_URL));

        //jsonStr = sh.makeServiceCall(url + 373); //or url + ID
        Log.i(TAG, "doInBackground Image: "  + String.valueOf(Config.BASE_URL));

        if (jsonStr != null) {
            try {
                JSONObject jsonObj = new JSONObject(jsonStr);

                // Getting JSON Array node
                GridItem item;
                item = new GridItem();
                Log.i(TAG, "parseResult: " + jsonObj);
                for (int i = 0; i < jsonObj.length(); i++) {
                    // if (response != null) {
                    String images = jsonObj.getString("images");

                    item.setImage(IMAGE_LINK + images);//IMAGE_LINK +

                    Log.i(TAG, "parseResult: " + IMAGE_LINK + " " +  images);

                    mGridData.add(item);

                }

            } catch (JSONException e1) {
                e1.printStackTrace();
            }



        }
        return null;
    }

剂量我正确检索数据?

3 个答案:

答案 0 :(得分:0)

images应该是JSONArray,因此您可以这样做来解析它(在for循环中!):

JSONArray imagesJSON = jsonObj.getJSONArray("images");
for(int k = 0 ; k<imagesJSON.length() ; k++){
   String image = imagesJSON.getString(k);
   item.setImage(IMAGE_LINK + image);//IMAGE_LINK +
   Log.i(TAG, "parseResult: " + IMAGE_LINK + " " +  image);
   mGridData.add(item);
}

答案 1 :(得分:0)

没有你的错误只是尝试下面的代码

try {
        JSONObject jsonObj = new JSONObject(jsonStr);
        JSONArray arrayObj = jsonObj.getJSONArray("images");

        for(int i=0;i<arrayObj.length();i++)
        {
            String item = arrayObj.getString(i);
            // now you use item string where you want
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

答案 2 :(得分:0)

图像是json对象字符串还是json数组?在你的代码中是字符串。
如果可以进行WebService更改,请求给你一个images的json数组,这是最佳实践。
如果不可能,您必须使用正则表达式解析json image对象。