gpt4 book ai didi

java - 始终将请求正文中的 Int 转换为 Long

转载 作者:行者123 更新时间:2023-12-01 10:24:50 24 4
gpt4 key购买 nike

我用 Java 编写了后端,并且端点被请求正文命中。端点有一个 JSON 正文,如下所示

{"id": 1234, "data": {...}}

现在,我正在获取请求数据,并按 ID 存储它。我想将 ids 保存为 long,但是,这些值可以是从 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对象,它是LongInteger类的父类(super class)。它有一个 longValue() 方法来每次获取 long 值。

public String getData (@RequestBody User user) {
Long id_long = ((Number) jsonRequest.get("id")).longValue();

更长的答案是不要使用像 JSONObject 这样的泛型类。定义自己的类,并使用spring绑定(bind)到它......

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 - 始终将请求正文中的 Int 转换为 Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35398349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com