0

Java を使用して JSON 応答をデコードするアプリケーションを開発しています。以下は、時折 NullPointerException が発生するコード スニペットです。

JSONParser parser=new JSONParser();
URL url=new URL("http://api.yummly.com/v1/api/recipes?q="+
URLEncoder.encode(dish,"UTF-       8")+"&_app_id=APP_ID8&_app_key=APP_KEY");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
Object json=parser.parse(br);
JSONObject obj=(JSONObject)json;
if(obj!=null)
 count=(long)obj.get("totalMatchCount"); <--- Exception at this point

このステートメントはループで実行されており、ランダムな反復で NullPointerException が発生しています。

4

2 に答える 2

3

obj.get("totalMatchCount") が null を返し、キャストで long に爆発していることを示しています。

何かのようなもの

Object countObj;
if(obj!=null) 
   countObj = obj.get("totalMatchCount");
if (countObj != null)
 count=(long)countObj

なぜ、それがヌルであるべきかどうか、そしてそれがヌルであるべきかどうかは別のことです。

于 2012-08-12T12:41:32.637 に答える
0

JSONObject#getオブジェクトにこの名前のキーが含まれていない場合は null を返します。(javadoc)。したがって、ほとんどの場合、Json 応答にはキーが含まれていませんtotalMatchCount

スペルを確認し、応答にそのキー含まれているかどうか (および実際に値があるかどうか) を確認し、実際の応答にそのキーが本当に含まれているかどうかを確認します (エラー応答または予期しない何かを受け取る場合があります)。

デバッガーを使用して NPE をキャッチし、json オブジェクトを注意深く調べます。

于 2012-08-12T13:27:02.197 に答える