当前位置: 首页 > 知识库问答 >
问题:

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

贾兴学
2023-03-14

我正在尝试读取 JSON 文件以创建新对象。我可以读取其中的所有字符串,但是在尝试读取整数时会抛出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

共有3个答案

贺君浩
2023-03-14

由于您知道该字段应该是int,因此您可以利用JSONObject api为您处理解析:

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

这比强制转换方法更健壮——如果有人更改了传递给您的json,接受的答案可能会中断。

郎子平
2023-03-14

整数没有小数点。

你应该解析一个int,而不是强制转换为int。

例如:

if (tipe.equals("anyString")) {
    String pot = obj.get("id3");
    int x = Integer.parseInt(pot);
    ap = new SomeObject(name, x);
}
方和豫
2023-03-14

先投到双倍

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

令人困惑的是,有三种类型的演员:

  • 那些转换原语值的
  • 改变引用类型的那些
  • 那些盒子和拆箱的

在这种情况下,您有一个<code>Object</code>(实际上是一个装箱的<code>Double</code〕),并且需要一个原始int。您不能使用同一个强制转换来取消装箱和转换,因此我们需要两个强制转换:第一个是从<code>对象</code>到<code>Double</code}(取消装箱),另一个是从

 类似资料:
  • 问题内容: 只是因为一个简单,易于表达的陈述使我的脸上有些错误,所以我有点头疼。 我有一个名为strings.json的json文件,如下所示: 我现在想读取json文件。我发现了以下这些语句,但是不起作用: 控制台上显示的错误是这样的: 已编辑 从更改为 并得到了这个: 问题答案: 该方法(“ load”中没有“ s”)可以直接读取文件: 您正在使用方法,该方法仅用于 字符串 参数。 编辑:新消

  • 我有一个名为Strings.json的json文件,如下所示: 我想读取json文件,现在仅此而已。我发现了这些说法,但它不起作用: 控制台上显示的错误是: 已编辑 从更改为 得到了这个:

  • 一个看起来简单、容易的陈述却让我犯了一些错误。 我有一个名为strings.json的JSON文件,如下所示: 我想阅读JSON文件,目前仅此而已。我发现了这些语句,但它不起作用: 控制台上显示的错误如下: 如果我使用<code>json。加载而不是<code>json。加载,我得到以下错误:

  • 问题内容: 我有点头疼,只是因为一个简单,易于表达的陈述使我的脸上有些错误。 我有一个名为的文件,如下所示: 我现在想读取文件。我发现了以下这些语句,但是不起作用: 控制台上显示的错误是这样的: 已编辑 从更改为 并得到了: 问题答案: 该方法( 中没有 )可以直接读取文件: 你正在使用方法,该方法仅用于字符串参数。 编辑:新消息是一个完全不同的问题。在这种情况下,该文件中存在一些无效的。为此,我

  • 问题内容: 我正在尝试使用该模块从python脚本读取json文件。经过一番谷歌搜索后,我发现以下代码: json文件的路径和名称在哪里。我收到以下错误: 问题答案: 该代码用作变量名。它将阴影您导入的模块引用。为变量使用其他名称。 除此之外,代码在接受字符串的同时传递文件对象。 传递文件内容: 或使用接受类似文件的对象。

  • 问题内容: 我开发了一个应用程序,可以从用户选择的文件夹中读取文件。它显示每个文件中有多少行代码。我只希望Java文件显示在文件选择器(扩展名为.java的文件)中。下面是我的代码: 我也进行了编辑,但是仍然无法正常工作,请告知请告知如何仅读取扩展名为.java的文件,换句话说,请仅从文件夹中读取java文件,请告知 问题答案: 您需要一个FilenameFilter。这应该为您工作: