Java使用JSON-simple调用单对象REST API出现类型转换异常如何解决
异常原因
- 错误出在代码中
JSONObject obj = (JSONObject) data_obj.get("quote");这一行,属于强制类型转换不匹配导致的运行时异常。 - 你调用的
https://api.kanye.rest/接口返回的JSON结构为{"quote":"具体的名言内容"},你可以直接在浏览器访问该接口地址查看返回结果,确认quote字段对应的值本身就是字符串类型,而非嵌套的JSON对象类型。 - JSON-simple库解析JSON字符串时,会把JSON中的字符串值直接映射为
java.lang.String类型,你强行将其转换为org.json.simple.JSONObject类型,自然触发类转换异常。
解决方案
直接修改对应行的类型转换逻辑即可,调整后的核心代码片段如下:
// 注释掉原来错误的强转代码 // JSONObject obj = (JSONObject) data_obj.get("quote"); // 修正为转换为字符串类型 String quote = (String) data_obj.get("quote"); // 发送消息时直接使用该字符串变量 commandSender.sendMessage("<Kanye> " + quote);
- 可选优化建议:读取响应内容时,使用
StringBuilder替代inline += scanner.nextLine()的写法,可以减少字符串拼接产生的多余对象,提升运行性能。
内容的提问来源于stack exchange,提问作者Ntdi
相关产品推荐
相关产品推荐

