2016-05-02 11 views
0

私はREST Webサービスを起動し、JSON答えを得るAndroidアプリケーションを持っています。 間違ったパラメータを入力すると、問題なくエラーを捕捉できますが、JSONの結果がnullになることがあります。どのように私はその状況を把握できますか?AndroidでJSON nullの結果を取得するにはどうすればよいですか?

私のAndroidのコード:

try { 
    JSONObject jsonObj = new JSONObject(results); 

    JSONArray result = jsonObj.getJSONArray("result"); 

    for (int i = 0; i < result.length(); i++) { 
     JSONObject c = result.getJSONObject(i); 

     String string04 = c.getString("string04"); 
     String string05 = c.getString("string05"); 

     TextView txt1 = (TextView)findViewById(R.id.textView1); 
     txt1.setText(string04); 

     TextView txt2 = (TextView)findViewById(R.id.textView2); 
     txt2.setText(string05); 


     JSONArray dest = c.getJSONArray("dest"); 

     for (int o = 0; o < dest.length(); o++) { 

      JSONObject d = dest.getJSONObject(o); 

      JSONArray pred = d.getJSONArray("pred"); 

      for (int u = 0; u < pred.length(); u++) { 

       JSONObject e = pred.getJSONObject(u); 

       String string13 = e.getString("string13"); 
       TextView txt4 = (TextView)findViewById(R.id.textView4); 
       txt4.setText(string13); 
      } 
     } 
    } 
} catch (JSONException e) { 
    e.printStackTrace(); 
    Log.d("error", e.getMessage()); 
} 

良いJSONの結果は次のようになります:

{ 
    "result": [{ 
     "string01": "104", 
     "string02": "104 - blablabla", 
     "string03": "104", 
     "string04": "blobloblo", 
     "string05": "blablabla", 
     "dest": [{ 
      "pred": [{ 
       "time": 1461348846, 
       "sec": 102, 
       "min": 1, 
       "string11": "514-String", 
       "string12": "Some String", 
       "string13": "Some other String", 
       "number": 0 
      }] 
     }] 
    }] 
} 

しかし、表示するデータがないとき時々、私はこのような何かを得る:

{ 
    "result": [{ 
     "string01": "104", 
     "string02": "104 - blablabla", 
     "string03": "104", 
     "string04": "blobloblo", 
     "string05": "blablabla", 
     "dest": [{"pred":[]}] 
    }] 
} 
+1

対応するJSONArrayオブジェクトの長さをテストするだけで、空の配列のサイズは0になります。 –

+0

リストが空の場合、 'pred'配列を超えるループは決して入力されません。ヌル。 –

答えて

0

JSONパーサには、を返す "opt"メソッドがあります。一致条件のオブジェクトがない場合はを返します。これらのメソッドはgetメソッドと似ています。

例えば:それが存在しない場合は、「column

optJSONObject("column")の値は、単にNULL値を返しますがない場合getJSONObject("column")exceptionthrowます。実行時に値が失われている可能性があるJSONsを使用している場合、私は個人的には "opt"メソッドを使用すると便利です。

関連する問題