You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在线服务器获取JSON数据报错:无法将字符串转为JSONObject求助

解决org.json.JSONException: "unsuccessful"无法转为JSONObject的问题

嘿,这个问题我碰到过不少,咱们一步步来捋清楚:

首先,这个错误的核心原因非常明确:你的在线服务器返回的不是合法的JSON对象,而是纯字符串"unsuccessful",但你的代码却在尝试把它解析成JSONObject,自然就报错了——本地服务器正常,说明本地接口返回的是标准JSON格式(比如{"status":"unsuccessful"}这类),两者的响应格式不一致。

接下来给你几个排查和解决的方向:

1. 先确认在线接口的真实响应内容

直接用工具验证在线接口返回的是什么:

  • 用浏览器直接访问在线接口URL,看页面显示的是不是纯文本"unsuccessful",而不是带大括号的JSON;
  • 或者用curl命令(比如curl https://你的在线接口地址)、Postman这类工具发送请求,查看响应体的格式。
    这一步能帮你确认是不是服务器返回的内容不符合预期。

2. 检查在线服务器的接口逻辑

大概率是在线服务器的接口在某些场景下(比如参数错误、权限不足、业务逻辑失败),直接输出了"unsuccessful"字符串,而没有封装成标准的JSON对象。比如正确的失败响应应该是类似这样的JSON:

{"status": "unsuccessful", "message": "参数错误"}

而不是直接返回纯文本。你需要检查服务器端的代码,确保所有场景下都返回合法的JSON格式。

3. 临时修改客户端代码兼容非JSON响应

如果暂时没法调整服务器代码,你可以在客户端先判断响应内容,再决定如何处理:

// 先获取服务器返回的原始字符串
String responseContent = getResponseFromServer();

// 判断是不是"unsuccessful"纯文本
if ("unsuccessful".equals(responseContent.trim())) {
    // 处理失败逻辑
    System.out.println("请求失败:服务器返回unsuccessful");
} else {
    // 正常解析JSON对象
    try {
        JSONObject jsonObject = new JSONObject(responseContent);
        // 后续业务处理
    } catch (JSONException e) {
        e.printStackTrace();
        // 处理其他解析错误
    }
}

4. 排查其他可能的问题

从你提到的截图(无法获取JSON字符串响应)来看,还可能存在这些情况:

  • 在线服务器的URL写错了,导致访问到了错误的页面(比如404页面的HTML),解析时也会触发类似错误;
  • 跨域限制、服务器防火墙/CDN拦截,导致实际拿到的响应是空或者错误内容;
  • 在线服务器未正常启动,接口无法提供服务。

你可以先从第一步的响应内容验证开始,这是最直接的突破口~

内容的提问来源于stack exchange,提问作者Amit Kr Maurya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:11:20