Reputation: 4783
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
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
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
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