JSON Simple:整数解析

Nor*_*gul 5 java rest post json

我在REST服务中解析JSON整数时遇到问题.解析String和double类型工作正常

工作:

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");
Run Code Online (Sandbox Code Playgroud)

不工作:

int baskId = (Integer) jsonObject.get("basketId");
Run Code Online (Sandbox Code Playgroud)

我试图将basketId我的篮子类转换为String,然后它运行正常,所以代码没问题,链接正常,但是,当我把它转回int时,我得到500服务器错误.我用它来创建一个带有一些数字ID的新篮子,所以我使用@POST注释,有效载荷中的JSON如下:

{"basketId":50}
Run Code Online (Sandbox Code Playgroud)

我不明白......

编辑:我确实得到它... JSON simple接受更大类型的Java原语,所以整数和浮点数是禁止的

小智 6

在你的代码中jsonObject.get("basketId");返回Long

因此,使用Long进行类型转换可以帮助您解决错误 (Long)jsonObject.get("basketId");

如果你真的需要Integer,那么输入它到inetger,如下所示

((Long)jsonObject.get("basketId")).intValue()
Run Code Online (Sandbox Code Playgroud)