有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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


共 (2) 个答案

  1. # 1 楼答案

    它告诉你obj。get(“totalMatchCount”)返回空值,并在演员阵容中爆炸到一个长时间

    差不多

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

    现在,为什么,它是否应该为空,是另一回事

  2. # 2 楼答案

    JSONObject#get如果对象不包含具有此名称的键,则返回null(javadoc)。因此,Json响应很可能不包含键totalMatchCount

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

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