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

从嵌套服务器返回JSON中获取字符串遇JSONException未处理问题

问题原因及解决方案

首先明确:这不是服务器返回JSON的问题——你已经通过LogCat验证了JSON结构正确且可用,报错的根源是代码没有处理Java里的检查型异常。

为什么会报错?

org.json.JSONObject的getJSONObject()和getString()方法都会抛出JSONException,这是一个检查型异常(Checked Exception),Java要求必须显式处理这类异常:要么用try-catch块捕获,要么在方法签名上声明throws JSONException,否则IDE会直接报错。

解决方案1:使用try-catch捕获异常

把你的代码包裹在异常处理块里,这样可以优雅处理可能的异常(比如万一后续服务器返回的JSON结构变化的情况):

String result = "";
try {
    JSONObject responseObj = vkjson.getJSONObject("response");
    result = responseObj.getString("first_name");
} catch (JSONException e) {
    // 这里可以添加异常处理逻辑,比如打印日志或者设置默认值
    e.printStackTrace();
    result = "默认名称";
}

解决方案2:在方法签名声明throws

如果你的代码本身就在一个可以抛出异常的方法里(比如异步任务的doInBackground或者自定义的工具方法),可以直接在方法上声明抛出JSONException:

public void parseVkJson(JSONObject vkjson) throws JSONException {
    String result = vkjson.getJSONObject("response").getString("first_name");
    // 后续业务处理逻辑
}

额外提示

虽然你现在确认JSON结构没问题,但处理异常是良好的编程习惯——万一后续服务器接口调整、返回字段缺失,异常处理可以避免App直接崩溃。

内容的提问来源于stack exchange,提问作者asmodeoux

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:19:30