2

我正在使用 JSON-Simple 以 JSON 格式摄取推文。我将用户对象拆分为它自己的 JSONObject 类,在内存中:

incomingUser = (JSONObject) incomingTweet.get("user");

然后我使用 JSON-Simple 从推文和用户对象中剥离各种字段;我在做

strippedJSON.put("userLocation", incomingUser.get("location").toString();

但事实证明,有时用户的位置设置为null.

所以现在我正在检查我要剥离的字段是否为空,并将其设置为“”:

strippedJSON.put("userLocation", (incomingUser.get("location").toString().equals(null)?
        "": incomingUser.get("location").toString());

但是我已经在调试模式下逐步完成了eclipse,发现有人的位置设置为null,并跳过了我剥离与之关联的JSON对象字段"location"并将其放入JSON对象字段的部分"user Location"。我得到了一个N​​PE。

我的三元陈述是否没有说明这一点?虽然它会检查它是否等于 null(只有一个“空对象”它应该能够看到指针是相同的)如果它是(condtion?是真的)它应该评估为put("location","")否?

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

4

2 回答 2

4

由于您试图访问空对象上的 .equals() 方法,因此您收到空指针异常。

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

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

编辑:实际上我刚刚想到它可能会incomingUser.get("location")返回null(即location键可能指的是JSONObjector JSONArray),在这种情况下你需要:

(incomingUser.get("location") == null) ? etc...
于 2012-10-04T15:44:34.673 回答
0

只需使用try and catch块来处理它......

try{

strippedJSON.put("userLocation", incomingUser.get("location").toString();



}catch(Exception ex){

  System.out.println("This field is null");

}
于 2012-10-04T14:51:58.620 回答