【发布时间】:2017-01-05 05:34:30
【问题描述】:
这是我必须从网站读取 JSON 格式的文本。但我得到了错误
Java.lang.ClassCastException: org.json.simple.JSONObject 不能 转换为 org.json.simple.JSONArray
这让我发疯了。任何人都可以帮忙吗?我还需要为所有“用户名”实例检查这个字符串,并为每个实例运行一些东西。
public class CommandCheck implements CommandExecutor {
private String username;
private static String host = "example.com";
private URL url;
private String apiKey = main.getNode("API-KEY");
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] arg3) {
try {
this.url = new URL(CommandCheck.host);
final URLConnection conn = this.url.openConnection();
conn.setConnectTimeout(5000);
if (this.apiKey != null) {
conn.addRequestProperty("x-api-key", this.apiKey);
}
conn.addRequestProperty("User-Agent", main.USER_AGENT);
conn.setDoOutput(true);
final BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
final String response = reader.readLine();
sender.sendMessage(response); //Im just dumping the raw String for the person running the command to see Debug mostly
final JSONArray array = (JSONArray) JSONValue.parse(response);
if (array.isEmpty()) {
sender.sendMessage("The Array appears to be empty");
return false;
}
JSONObject latestUpdate = (JSONObject) array.get(array.size() - 1);
username = (String) latestUpdate.get("Username");
sender.sendMessage("whitelist add" + username);
return true;
} catch (final IOException e) {
if (e.getMessage().contains("HTTP response code: 403")) {
sender.sendMessage("I think there is an API key issue");
} else {
sender.sendMessage("Problem of unknown orign");
}
return false;
}
}
【问题讨论】:
-
您没有包含有问题的字符串。就像错误所说的那样,赌它是一个对象而不是一个数组。
-
{ "redemptions":[ { "reward_id":450491, "redemption_id":1729333, "created_at":"2017-01-05T00:42:41.949Z", "refunded":false, “完成”:假,“用户输入”:{“我的世界用户名”:“Budderb123”},“用户名”:“budderbb123”},{“reward_id”:450491,“redemption_id”:1729314,“created_at”:“2017- 01-05T00:41:08.881Z", "refunded":false, "completed":false, "user_input": { "Minecraft Username":"Bigdaddy" }, "username":"dustinduse" } ], "total" :2, "page_size":25 }
-
是的,这是一个带有顶级键
redemptions、total和page_size的 JSON 对象。不是数组。 -
好的。那么我需要先转换为数组吗?对吗?