我正在使用JSON-Simple在JSON中提取推文。我将用户对象拆分为它自己的JSONObject类,在内存中:
incomingUser = (JSONObject) incomingTweet.get("user");
然后我使用JSON-Simple从tweet和用户对象中删除各个字段;我在做什么
strippedJSON.put("userLocation", incomingUser.get("location").toString();
但事实证明,偶尔用户的位置设置为null
。
所以现在我正在检查我正在剥离的字段是否为空,并将其设置为“”:
strippedJSON.put("userLocation", (incomingUser.get("location").toString().equals(null)?
"": incomingUser.get("location").toString());
但是我已经在调试模式中逐步执行了eclipse,发现有人将其位置设置为null,并且在我删除与"location"
关联的JSON对象字段并将其放入JSON对象的部分中字段"user Location"
。我得到了一份NPE。
我的三元声明没有说明这一点吗?虽然我会检查它是否等于null(只有一个'空对象'它应该能够看到指针是相同的)如果它是(condtion?
为真)它应该评估到put("location","")
没有?
我哪里错了?我应该怎么做才能处理这个空值?
答案 0 :(得分:4)
您正在尝试访问空对象上的.equals()方法,因为您正在获取Null指针异常。
如果location
键返回值,请尝试此操作:
(incomingUser.get("location").toString() == null) ? etc..
编辑:实际上它刚刚发生,我可能会incomingUser.get("location")
返回null
(即location
密钥可能指的是JSONObject
或JSONArray
),在这种情况下你需要:
(incomingUser.get("location") == null) ? etc...
答案 1 :(得分:0)
只需使用try and catch
块来处理它........
try{
strippedJSON.put("userLocation", incomingUser.get("location").toString();
}catch(Exception ex){
System.out.println("This field is null");
}