java - 尝试从java中的JSON文件读取整数

标签 java json int

我正在尝试读取 JSON 文件来创建新对象。我可以读取其中的所有字符串,但在尝试读取 int 时抛出 ClassCastException。这是 JSON 文件。

{"id1" : "string1", 
 "id2": "string2",            
 "id3": 100.0
}   

这是java代码。

public static Aparelho novoAparelho(JSONObject obj) {

    Aparelho ap = null;

        String tipe = (String) obj.get("id1");
        String name = (String) obj.get("id2");


        if(tipe.equals("anyString")) {
            int pot = (int) obj.get("id3");
            ap = new SomeObject(name, pot);
        }

    return ap;
}

它抛出。 线程“main”中的异常 java.lang.ClassCastException:java.lang.Double 无法转换为 java.lang.Integer

最佳答案

首先将其转换为double:

int pot = (int) (double) obj.get("id3");
ap = new SomeObject(name, pot);

令人困惑的是,共有三种类型的强制转换:

  • 那些转换基元值的
  • 那些改变引用类型的
  • 那些装箱和拆箱的

在本例中,您有一个 Object(实际上是一个装箱的 Double),并且您需要一个原始 int。您无法使用相同的转换进行拆箱和转换,因此我们需要两次转换:第一次从 Objectdouble (拆箱),第二次从 double code> 到 int (转换)。

关于java - 尝试从java中的JSON文件读取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29568278/

相关文章:

java - super 和extends 在通用通配符中是独占的吗?

c - 将整数解析为字符串 C

java - 我们怎样才能得到在一定范围内,int能被2整除的最大次数

java - scala 重载构造函数中的逻辑

java - Spring MVC 3.1 根据字段值应用自定义验证

java - 如何使用 Gson 处理具有时间戳的 Json 响应? java.lang.IndexOutOfBoundsException

ios - Swift 2 发布和响应代码转换有用的功能

c# - 每次单击按钮时添加到 int 并显示在文本框中 c#

java - .NET 相当于内部类型数组的 java.util.Arrays.hashCode() 函数?

python - 使用 telegram bot 返回 matplotlib 绘图