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,并且在演员阵容中爆炸到很长。

就像是

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 响应不包含 key totalMatchCount

检查拼写,检查响应是否应该包含该键(以及它是否确实具有值)并检查实际响应是否确实具有该键(可能您收到一些错误响应或其他意外)。

使用调试器,捕获 NPE 并仔细检查 json 对象。

于 2012-08-12T13:27:02.197 回答