Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将请求正文中的Int转换为Long always_Java_Spring_Spring Mvc_Int_Long Integer - Fatal编程技术网

Java 将请求正文中的Int转换为Long always

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之间的任意值

我用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之间的任意值

我使用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对象,它是longInteger类的超类。它有一个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对象,它是LongInteger类的超类。它有一个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
。原因是这两种类型是类而不是原语。