始终将请求体中的 Int 转换为 Long
Convert Int in Request Body to Long always
我在 Java 中编写了我的后端,端点被请求正文命中。端点有一个 JSON 主体,看起来像这样
{"id": 1234, "data": {...}}
现在,我正在获取请求数据,并按 ID 存储它。我想将 ID 保存为 longs,但是,值可以是从 int-valid 到 long-valid 的任何地方。
我正在使用 Spring 框架来保存它。函数看起来像这样
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 所以我想知道如何正确地进行转换,所以我总是很长。
简单的答案是使用一个java.lang.Number对象,它是Long[=20=的superclass ] 和 整数 classes。它有一个 longValue() 方法来每次获取 long 的值。
public String getData (@RequestBody User user) {
Long id_long = ((Number) jsonRequest.get("id")).longValue();
较长的答案是不要使用像 JSONObject 这样的通用 class。定义您自己的 class,并使用 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
有一个 longValue method that returns the value as a long
(primitive). You can assign it to id_long
and let the autoboxing 包装成 Long
。
public String getData (@RequestBody JSONObject jsonRequest) {
Long id_long = jsonRequest.get("id").longValue();
}
我在 Java 中编写了我的后端,端点被请求正文命中。端点有一个 JSON 主体,看起来像这样
{"id": 1234, "data": {...}}
现在,我正在获取请求数据,并按 ID 存储它。我想将 ID 保存为 longs,但是,值可以是从 int-valid 到 long-valid 的任何地方。
我正在使用 Spring 框架来保存它。函数看起来像这样
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 所以我想知道如何正确地进行转换,所以我总是很长。
简单的答案是使用一个java.lang.Number对象,它是Long[=20=的superclass ] 和 整数 classes。它有一个 longValue() 方法来每次获取 long 的值。
public String getData (@RequestBody User user) {
Long id_long = ((Number) jsonRequest.get("id")).longValue();
较长的答案是不要使用像 JSONObject 这样的通用 class。定义您自己的 class,并使用 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
有一个 longValue method that returns the value as a long
(primitive). You can assign it to id_long
and let the autoboxing 包装成 Long
。
public String getData (@RequestBody JSONObject jsonRequest) {
Long id_long = jsonRequest.get("id").longValue();
}