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"));