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
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()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With