Java 将请求正文中的Int转换为Long always
我用Java编写了我的后端,端点被一个请求体击中。端点有一个JSON主体,如下所示Java 将请求正文中的Int转换为Long always,java,spring,spring-mvc,int,long-integer,Java,Spring,Spring Mvc,Int,Long Integer,我用Java编写了我的后端,端点被一个请求体击中。端点有一个JSON主体,如下所示 {"id": 1234, "data": {...}} public String getData (@RequestBody JSONObject jsonRequest) { Long id_long = (Long) jsonRequest.get("id"); 现在,我获取请求数据,并按id存储它。我想将id保存为long,但是,值可以是int-valid到long-valid之间的任意值
{"id": 1234, "data": {...}}
public String getData (@RequestBody JSONObject jsonRequest) {
Long id_long = (Long) jsonRequest.get("id");
现在,我获取请求数据,并按id存储它。我想将id保存为long,但是,值可以是int-valid到long-valid之间的任意值
我使用Spring框架来保存它。函数如下所示
{"id": 1234, "data": {...}}
public String getData (@RequestBody JSONObject jsonRequest) {
Long id_long = (Long) jsonRequest.get("id");
然而,我得到了这个错误
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
这就是我被困的地方。有时id值会像1234L一样有效,或者是一个很长的数字,它在很长的范围内。但是,有时它是int范围。我没有太多地使用Java,所以我想知道如何正确地进行转换,这样我总是会得到一个long。简单的答案是使用Java.lang.Number对象,它是long和Integer类的超类。它有一个longValue()方法每次都以long的形式获取值
public String getData (@RequestBody User user) {
Long id_long = ((Number) jsonRequest.get("id")).longValue();
较长的答案是不使用像JSONObject这样的泛型类。定义您自己的类,并使用spring绑定到它
public class User {
private long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
public String getData (@RequestBody User user) {
Long id_long = user.getId();
简单的答案是使用java.lang.Number对象,它是Long和Integer类的超类。它有一个longValue()方法每次都以long的形式获取值
public String getData (@RequestBody User user) {
Long id_long = ((Number) jsonRequest.get("id")).longValue();
较长的答案是不使用像JSONObject这样的泛型类。定义您自己的类,并使用spring绑定到它
public class User {
private long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
public String getData (@RequestBody User user) {
Long id_long = user.getId();
Integer
有一个方法,该方法将值作为long
(原语)返回。您可以将其分配给id\u long
,并让用户将其包装成long
public String getData (@RequestBody JSONObject jsonRequest) {
Long id_long = jsonRequest.get("id").longValue();
}
Integer
有一个方法,该方法将值作为long
(原语)返回。您可以将其分配给id\u long
,并让用户将其包装成long
public String getData (@RequestBody JSONObject jsonRequest) {
Long id_long = jsonRequest.get("id").longValue();
}
那是什么东西?您是否尝试使用
Long.valueOf()
?它是org.json.simple.JSONObject,我没有,因为当我尝试将它从JSONObject中取出时会发生错误。我将对其进行编辑以使其更清晰。即使可以将int
转换为Long
,也不能将Integer
转换为Long
。原因是这两种类型是类而不是原语。那是什么?您是否尝试使用Long.valueOf()
?它是org.json.simple.JSONObject,我没有,因为当我尝试将它从JSONObject中取出时会发生错误。我将对其进行编辑以使其更清晰。即使可以将int
转换为Long
,也不能将Integer
转换为Long
。原因是这两种类型是类而不是原语。