Norgul
Norgul

Reputation: 4783

JSON Simple: integer parsing

I have a problem parsing JSON integer in my REST service. Parsing String and double type works fine

Working:

JSONParser parser = new JSONParser();
Object obj = null;
try {
    obj = parser.parse(input);
} catch (ParseException e) {
    e.printStackTrace();
}
JSONObject jsonObject = (JSONObject) obj;   

//---------------
String uName = (String) jsonObject.get("userName");
double iPrice = (Double) jsonObject.get("itemPrice");

Not working:

int baskId = (Integer) jsonObject.get("basketId");

I tried to convert the basketId in my basket class to String, and then it functions ok, so code is okay, and link is working, however, when I cast it back to int, I get 500 server error. I am using it to create a new basket with some numeric ID, so I use the @POST annotation and the JSON in the payload is as follows:

{"basketId":50}

I don't get it...

EDIT: I do get it...JSON simple accepts just bigger types of Java primitives, so integer and float are a no-no

Upvotes: 5

Views: 24204

Answers (3)

raki
raki

Reputation: 195

In your code jsonObject.get("basketId");returns Long

So using Long for type casting would help you in resolving your error (Long)jsonObject.get("basketId");

If you really need Integer then type cast it to inetger as follows

((Long)jsonObject.get("basketId")).intValue()

Upvotes: 7

Santo
Santo

Reputation: 182

Rather than : int baskId = (Integer) jsonObject.get("basketId");

Use : int baskId = jsonObject.getInt("basketId");

It is in the official documentation : http://www.json.org/javadoc/org/json/JSONObject.html#getInt(java.lang.String)

Upvotes: 0

libik
libik

Reputation: 23049

If you parse it as String, you cant do something like this :

String x = "10";
int y = (int) x;

But you can use this method

String x = "10";
int y = Integer.valueOf(x);

Upvotes: 0

Related Questions