Webサービスでlong integerを受け取ることになっています。
long ipInt = (long) obj.get("ipInt");
プログラムをテストしてipInt値= 2886872928を設定すると、成功します。ただし、プログラムをテストしてipInt値= 167844168を入力すると、エラーが発生します。
Java.lang.ClassCastException:Java.lang.IntegerをJava.lang.Longにキャストできません
エラーは上記のコードを指しています。
参考までに、私のデータはJSON形式です:
{
"uuID": "user001",
"ipInt": 16744168,
"latiTude": 0,
"longiTude": 0,
}
私のコードが両方のipInteger値を受信できるようにするための提案はありますか?
整数の範囲外の値を指定すると現在のアプローチが機能するが、整数の範囲内にあると失敗する、と述べました。戻り値の型を自分で確認することは必要と思われるため、これはAPIの奇妙な動作です。あなたはcanします。通常はinstanceof
を使用します。何かのようなもの、
long ipInt;
Object o = obj.get("ipInt");
if (o instanceof Integer) {
ipInt = ((Integer) o).intValue();
} else if (o instanceof Long) {
ipInt = ((Long) o).longValue();
}