簡體   English   中英

凌空響應問題 Android

[英]Volley Response Issue Android

我正在解析一個簡單的 JSON 響應,並且在嘗試解析雇主名稱時它正在工作,但它最終會崩潰並說我的“評論”json 對象為空。 這是回復: https : //raw.githubusercontent.com/vikrama/feed-json-sample/master/feed.json

這是我閱讀它的方式:

private void extractName()
    {
        RequestQueue queue = Volley.newRequestQueue(this);
        JsonObjectRequest request = new JsonObjectRequest(JSON_URL, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    JSONObject gimme = response.getJSONObject("response");
                    JSONArray resultsArray =  gimme.getJSONArray("results");

                    for(int i = 0; i < resultsArray.length(); i++)
                    {
                        JSONObject info = resultsArray.getJSONObject(i);
                        JSONObject review = info.getJSONObject("review");
                        Log.d("COMP NAME", review.getString("employerName"));

                        companyNames.add(review.getString("employerName"));
                    }
                    recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
                    adapter = new CompanyAdapter(MainActivity.this, companyNames);
                    recyclerView.setAdapter(adapter);

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("TAG", error.getMessage());
            }
        });

        queue.add(request);
    }

調試行打印正確的值,然后突然停止說“沒有審查價值”。 我對此感到非常困惑,因為我似乎正在正確閱讀數據。 (使用https://jsonformatter.org/json-viewer更好地格式化我上面列出的這個 json)

此外,我的 recyclerview 中的所有其他內容都已正確設置,並且在我的主要活動的 onCreate() 方法中調用了方法 extractName()。

發生這種情況是因為在某些 JSON 對象中您沒有“審查”對象,因此它直接拋出您的代碼以捕獲異常。

為了克服這個問題,請使用:-

   if(info.has("review")) {
     JSONObject review = info.getJSONObject("review");
     companyNames.add(review.getString("employerName"));
   }

代替:

   JSONObject review = info.getJSONObject("review");
   Log.d("COMP NAME", review.getString("employerName"));
   companyNames.add(review.getString("employerName"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM