java - 尝试将 Object 转换为 MapEntry 时出现 ClassCastException

标签 java json

我试图从 JSONObject 获取一些值到 HashMap 中,但我在 for 循环的最后一行不断收到 ClassCastException。

Exception in thread "main" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer

我尝试将 mapEntry.getValue() 显式转换为整数,但我不断收到相同的错误。如果我运行没有最后一行的代码,我会得到以下输出:

key: peter value: 33
key: somekey value: 11
key: steve value: 38
key: guy value: 22
key: name value: 54

所以我可以看到mapEntry.getValue()似乎打印整数,或者至少我应该能够转换为整数的数字。

JSONObject json = getJsonFromFile(filePath);
HashMap<String, Integer> entries = new HashMap<>();

for (Object obj : json.entrySet()) {
            Entry<String, Integer> mapEntry = (Entry<String, Integer>) obj;
            System.out.println("key: " + mapEntry.getKey() + " value: " + mapEntry.getValue());
            entries.put(mapEntry.getKey(), mapEntry.getValue());
        }

最佳答案

如果你尝试这样做:

JSONObject json = getJsonFromFile(filePath);
HashMap<String, Number> entries = new HashMap<>();

for (Object obj : json.entrySet()) {
    Entry<String, Number> mapEntry = (Entry<String, Number>) obj;
    System.out.println("key: " + mapEntry.getKey() + " value: " + mapEntry.getValue());
    entries.put(mapEntry.getKey(), mapEntry.getValue());
}

NumberIntegerLong 的父类(super class),它应该可以正常编译。

关于java - 尝试将 Object 转换为 MapEntry 时出现 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39831716/

相关文章:

javascript - json 与谷歌地理编码 api

json - Logstash json解析

ios - 无法从 JSON 数据集中获取位置坐标

java - XML 到 JSON 转换 [oracle.xdb.XMLType 到 JSON 对象] 性能问题

java - 又一个 "Spring ,could not resolve place holder"

java - 如何使用 hibernate 4 实现自定义线程安全序列?

java - ProcessBuilder 重定向到标准输出

java - Maven 在存储库中保留旧版本的 asm

java - 从一个数组中获取数据来创建另一个数组。这个循环有什么问题?

json - 从 Facebook API 向 Meteor 插入数据