即使object不为null,也会出现NullPointerException

时间:2012-08-12 12:24:20

标签: java json nullpointerexception

我正在开发一个应用程序,我正在使用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。

2 个答案:

答案 0 :(得分:3)

它告诉你obj.get(“totalMatchCount”)返回null,并且在强制转换中炸毁。

这样的东西
Object countObj;
if(obj!=null) 
   countObj = obj.get("totalMatchCount");
if (countObj != null)
 count=(long)countObj

现在,为什么,是否应该为null,还有其他原因。

答案 1 :(得分:0)

如果对象不包含具有此名称的密钥,则

JSONObject#get返回 null。(javadoc)。所以Json响应很可能不包含密钥totalMatchCount

检查拼写,检查响应是否包含该键(如果它实际上有值)并检查实际响应是否真的有该键(可能是您收到一些错误响应或某事否则这是意外的。)

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