我正在尝试读取 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。您无法使用相同的转换进行拆箱和转换,因此我们需要两次转换:第一次从 Object
到 double
(拆箱),第二次从 double
code> 到 int
(转换)。
关于java - 尝试从java中的JSON文件读取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29568278/