java NullPointerException,即使对象不为null
我正在开发一个应用程序,使用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
# 1 楼答案
它告诉你obj。get(“totalMatchCount”)返回空值,并在演员阵容中爆炸到一个长时间
差不多
现在,为什么,它是否应该为空,是另一回事
# 2 楼答案
JSONObject#get
如果对象不包含具有此名称的键,则返回null(javadoc)。因此,Json响应很可能不包含键totalMatchCount
检查拼写,检查响应是否应该包含该键(以及它是否真的有值),并检查实际响应是否真的有该键(可能您收到了一些错误响应或其他意外情况)
使用调试器,捕捉NPE并仔细检查json对象