How to get an Integer
instead of Long
from JSON?
I want to read JSON in my Java program, but when I get a JSON value which is a number, my parser returns a number of type Long
.
I want to get an Integer
. I tried to cast the long to an integer, but java throws a ClassCastException
(java.lang.Long
cannot be cast to java.lang.Integer
).
I tried several things, such as first converting the long to a string, and then converting with Integer.parseInt();
but also that doesn't work.
I am using json-simple
Edit:
I still can't get it working. Here is an example: jsonItem.get("amount"); // returns an Object
I can do this:
(long)jsonItem.get("amount");
But not this:
(int)jsonItem.get("amount");
I also can't convert it with
Integer newInt = new Integer(jsonItem.get("amount"));
or
Integer newInt = new Integer((long)jsonItem.get("amount"));
As a practical matter, Javascript integers are limited to about 2^53 (there are no integers; just IEEE floats). But the JSON spec is quite clear that JSON numbers are unlimited size.
Strictly speaking, json is untyped, so you can't send it as an integer, it has to be a string.
The JSON RFC (RFC 4627) says that order of object members does not matter.
Please understand that Long
and Integer
are object classes, while long
and int
are primitive data types. You can freely cast between the latter (with possible loss of high-order bits), but you must do an actual conversion between the former.
Integer newInt = new Integer(oldLong.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