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