AncientSwordRage
AncientSwordRage

Reputation: 7645

How to handle a null value in JSON-Simple?

I'm ingesting tweets in JSON using JSON-Simple. I split the user object off into it's own JSONObject class, in memory:

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

Then I'm stripping off various fields from the tweet and the user objects using JSON-Simple; I was doing

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

But it turns out that occasionally a user's location is set to null.

So now I'm checking to see if the field I'm stripping is null, and setting it to "":

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

But I've stepped through eclipse in debug mode and found someone who's location is set to null, and stepped over the part where I strip out the JSON object field associated with "location" and put it into the JSON object field "user Location". And I get a NPE.

Does my ternary statement not account for that? I'd have though it would check if it was equal to null (there only being one 'null object' it should be able to see the pointers are the same) if it is (condtion? is true) it should evaluate to put("location","") no?

Where am I going wrong? What should I do instead to handle this null value?

Upvotes: 3

Views: 10390

Answers (2)

Andy
Andy

Reputation: 993

You are getting a Null Pointer Exception because you are attempting to access the .equals() method on a null object.

Instead try this if the location key returns a value:

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

Edit: Actually its just occured to me that maybe incomingUser.get("location") returns null ( ie. the location key may be referring to an JSONObject or JSONArray ), in which case you need:

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

Upvotes: 4

Kumar Vivek Mitra
Kumar Vivek Mitra

Reputation: 33544

Just use try and catch block to handle it........

try{

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



}catch(Exception ex){

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

}

Upvotes: 2

Related Questions