为什么我不能在代码中解析值“字段”?

时间:2018-08-25 01:56:59

标签: android json

运行我的应用程序时,在logcat中,“问题分析地震Json结果     org.json.JSONException:字段无值”

您可以检查我的JSON代码吗?我是JSON解析的初学者,因此我搜索了很多内容,但是我不确定我的代码。

This is my Urls...

public class Utils {

private static List<News> extractFromJson(String newsJSON) {
    if (TextUtils.isEmpty(newsJSON)) {
        return null;
    }

    List<News> news = new ArrayList<>();

    try {
        // Create a JSONObject from the JSON response string
        JSONObject baseJsonResponse = new JSONObject(newsJSON);
        JSONObject response = baseJsonResponse.getJSONObject("response");
        JSONArray jsonArray = response.getJSONArray("results");


        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject currentNews = jsonArray.getJSONObject(i);
            JSONObject fields = currentNews.getJSONObject("fields");

            Drawable thumbnail = LoadImageFromUrl (fields.getString("thumbnail"));

            String section = currentNews.getString("sectionName");
            String title = currentNews.getString("webTitle");
            String url = currentNews.getString("webUrl");
            String date = currentNews.getString("webPublicationDate");

            news.add(new News( section, title, url, date,thumbnail));
        }
        return news;
    } catch (JSONException e) {
        Log.e("Utils", "Problem parsing the news Json results", e);
    }
    return null;
    }

private static Drawable LoadImageFromUrl(String imageurl) {
    Drawable drawable = null;
    InputStream inputStream = null;

    try {
        inputStream = new URL(imageurl).openStream();
        drawable = Drawable.createFromStream(inputStream, null);
        inputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return drawable;
}

}

1 个答案:

答案 0 :(得分:1)

尝试进行验证

发生问题可能是您的json列表中没有字段jsonobject。它可能不在其他jsonobjects中。因此,在解析之前,请检查jsonobject是否具有实际字段jsonobject

  

只要您的json值有时可能为null,就使用此条件。

  if(currentNews.has("fields"))
           {
             JSONObject fields = currentNews.getJSONObject("fields");
           }
          else
           {
              Log.d("JSON_TAG","NO FIELD JSON OBJECT");
           }