J'ai écrit mon backend en Java, et le point de terminaison est frappé avec un corps de la demande. Le critère d'évaluation a un corps JSON qui ressemble à ceciConvertir Int dans le corps de la demande à Long toujours
{"id": 1234, "data": {...}}
Maintenant, je reçois les données de demande, et le stockage par l'identifiant. Je veux enregistrer les ids comme longs, cependant, les valeurs peuvent être n'importe où de int-valide à long-valide. J'utilise le framework Spring pour le sauvegarder. La fonction ressemble à ceci
public String getData (@RequestBody JSONObject jsonRequest) {
Long id_long = (Long) jsonRequest.get("id");
Cependant, je reçois cette erreur
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
C'est là où je suis coincé. Parfois, la valeur d'id sera valide comme 1234L, ou un nombre vraiment long qui est à longue portée. Cependant, parfois c'est la gamme int. Je n'ai pas tellement utilisé Java que je me demandais comment faire correctement le casting, donc je me fais toujours un peu long.
Qu'est-ce que 'JSONObject' est-ce? Avez-vous essayé d'utiliser 'Long.valueOf()'? –
C'est l'org.json.simple.JSONObject, et je ne l'ai pas fait, car l'erreur se produit lorsque j'essaie de le sortir de JSONObject. Je vais l'éditer pour le rendre plus clair. – Gargob
Vous ne pouvez pas convertir 'Integer' en' Long' même si vous pouvez convertir 'int' en' long'. La raison en est que ces 2 types sont des classes et non des primitives. – Spotted