Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSON Simple: integer parsing

Tags:

java

json

rest

post

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

like image 592
Norgul Avatar asked Apr 21 '15 11:04

Norgul


1 Answers

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()
like image 109
raki Avatar answered Oct 18 '22 21:10

raki