バレーボールレスポンス問題のAndroid

AAA:

私は簡単なの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で他のすべてが適切に設定され、メソッドextractNameは()私の主な活動ののonCreate()メソッドで呼び出されています。

ディーパック:

それがキャッチ例外に直接コードを投げていますので、いくつかの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"));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=296721&siteId=1