JSON - simple d'obtenir un Entier au lieu de Long
Comment obtenir un Integer
au lieu de Long
de JSON?
Je veux lire JSON dans mon programme Java, mais quand je rentre une valeur JSON qui est un nombre, mon analyseur retourne un nombre de type Long
.
Je veux obtenir un Integer
. J'ai essayé de lancer le long d'un entier, mais java jette un ClassCastException
(java.lang.Long
ne peut pas être lancé à java.lang.Integer
).
J'ai essayé plusieurs choses, comme les convertissant d'abord le long d'une chaîne de caractères, et ensuite de les convertir avec Integer.parseInt();
mais aussi qui ne fonctionne pas.
Je suis en utilisant json simple
Edit:
J'ai toujours pas de travail. Voici un exemple:
jsonItem.get("somme"); //retourne un Objet
Je peux le faire:
(long)jsonItem.get("amount");
Mais pas cette:
(int)jsonItem.get("amount");
Je ne peux pas le convertir avec
Integer newInt = new Integer(jsonItem.get("amount"));
ou
Integer newInt = new Integer((long)jsonItem.get("amount"));
Long
objet a un intValue()
méthode.Maintenant, on dirait que vous êtes délibérément essayer de trouver avec chaque variation possible sur la solution qui n'est pas droit. Pourquoi ne pas simplement suivre l'exemple fourni par Chaude Lèche ou Joop Eggen?
Je l'ai eu à travailler. Merci. J'ai été confondu par les classes et types de données
Écoutez attentivement: JSON, c'est de revenir un
Long
. Cet objet contient en son sein un long
valeur. Si vous voulez que la valeur à être représentée dans une Integer
objet, vous devez extraire la valeur de la Long
objet et de créer un nouveau Integer
objet à partir de la valeur.OriginalL'auteur user2190492 | 2014-01-01
Vous devez vous connecter pour publier un commentaire.
S'il vous plaît comprendre que
Long
etInteger
sont des classes d'objets, tandis quelong
etint
sont les types de données primitifs. Vous pouvez librement exprimés entre le dernier (avec possibilité de perte de bits d'ordre élevé), mais vous devez faire une conversion réelle entre l'ancien.Integer.valueOf(oldLong.intValue())
serait préférable, ou l'équivalent, mais moins explicite(int)(long)oldLong
.Ouais, ce serait mieux.
Par OP premier exemple, si le
(long)jsonItem.get("amount");
peut être analysé comme un long, pourquoi pas une primitive de type int?OriginalL'auteur Hot Licks