如何获取/解析图像的网址? JSON / Volley库

时间:2015-02-19 07:23:16

标签: android json android-fragments android-volley android-json

正如您在图片中看到的,我有 JSON对象'多媒体',它有4种不同格式的图片信息。我只需要他们的网址。让我们说哪个有标准格式(75x75)。我在我的Android应用程序中使用排球库。我很困惑如何获取/解析图片中带下划线的图片<(>字符串格式就足够了)

enter image description here

以下是我使用的代码

NewsFragment:

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        volleySingleton = VolleySingleton.getInstance();
        requestQueue = volleySingleton.getRequestQueue();
        sendJsonRequest();
    }

    private void sendJsonRequest(){
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET,
                getRequestUrl(10),
                null,
                new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    parseJSONRequest(response);
                }
                }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
                });
        requestQueue.add(request);
    }

    private void parseJSONRequest(JSONObject response){
        if(response==null || response.length()==0){
            return;
        }
        try {
            JSONArray arrayResult = response.getJSONArray(Keys.EndPointNews.KEY_RESULTS);

            for (int i = 0; i < arrayResult.length(); i++){
                JSONObject currentResult = arrayResult.getJSONObject(i);

                String section = currentResult.getString(Keys.EndPointNews.KEY_SECTION);
                String subsection = currentResult.getString(Keys.EndPointNews.KEY_SUBSECTION);
                String title = currentResult.getString(Keys.EndPointNews.KEY_TITLE);
                String article_abstract = currentResult.getString(Keys.EndPointNews.KEY_ABSTRACT);
                String published_date = currentResult.getString(Keys.EndPointNews.KEY_PUBLISHED_DATE);

                // HERE IS A PROBLEM: EDIT:
                JSONArray arrayMultimedia = currentResult.getJSONArray(Keys.EndPointNews.KEY_MULTIMEDIA);
                JSONObject objectMultimedia = arrayMultimedia.getJSONObject(0);
                String multimediaURL = null;
                if(objectMultimedia.has(Keys.EndPointNews.KEY_MULTIMEDIA_URL))
                {
                       multimediaURL = objectMultimedia.optString(Keys.EndPointNews.KEY_MULTIMEDIA_URL);
                }

                News news = new News();

                news.setSection(section);

                news.setSubsection(subsection);
                news.setArticleTitle(title);
                news.setArticleAbstract(article_abstract);
                Date date = mDateFormat.parse(published_date);
                news.setPublishedDate(date);

                //EDIT
                news.setMultimediaURL(multimediaURL);

                mListNews.add(news);
            }
            Toast.makeText(getActivity(),mListNews.toString(),Toast.LENGTH_LONG).show();
        }catch (JSONException e){

        }
        catch (ParseException e) {
            e.printStackTrace();
        }
}

感谢任何帮助!

编辑:

public String getMultimediaURL(){
     return multimediaURL;
}
public void setMultimediaURL(String multimediaURL){
     this.multimediaURL = multimediaURL;
}

2 个答案:

答案 0 :(得分:2)

我必须建议您使用GSON库来解析您的JSON reposnses。这很简单,你只需要创建你的模板/实体类。这是link并从here

下载gson库

请参阅以下答案@ρяσѕρєяK

参考this回答

答案 1 :(得分:1)

multimedia是JSONArray而不是JSONObject。从multimedia JSONObject获取currentResult json数组:

JSONObject currentResult = arrayResult.getJSONObject(i);
JSONArray arrMultimedia = currentResult.getJSONArray(
                                     Keys.EndPointNews.KEY_MULTIMEDIA);

multimedia数组包含JSONObejct,因此从arrMultimedia获取JSONObject以使用key获取所有值:

JSONObject jsonObjMultimedia = arrMultimedia.getJSONObject(0);
String strPicUrl=jsonObjMultimedia.optString("url");