如何在JSON-Simple中处理空值?

时间:2012-10-04 14:48:27

标签: java nullpointerexception ternary-operator json-simple

我正在使用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","")没有?

我哪里错了?我应该怎么做才能处理这个空值?

2 个答案:

答案 0 :(得分:4)

您正在尝试访问空对象上的.equals()方法,因为您正在获取Null指针异常。

如果location键返回值,请尝试此操作:

(incomingUser.get("location").toString() == null) ? etc..

编辑:实际上它刚刚发生,我可能会incomingUser.get("location")返回null(即location密钥可能指的是JSONObjectJSONArray ),在这种情况下你需要:

(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");

}