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

Android Studio Java中如何仅获取JSON对象1的a、b值

正确解析JSON获取键“1”中a和b的值的方案

你的核心错误是把键“1”对应的**JSON对象(JSONObject)误当作JSON数组(JSONArray)**处理了——从目标JSON结构能看到,键“1”的值是一个包含a、b等键的对象,而非数组,所以不能用getJSONArray()方法。

以下是修正后的完整解析代码:

try {
    URL url = new URL("https://api.npoint.io/ba77aacc0972af3c686a");
    HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
    InputStream inputStream = httpURLConnection.getInputStream();
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
    String line;
    String data = ""; // 初始化data,避免空指针异常

    while ((line = bufferedReader.readLine()) != null){
        data = data + line;
    }
    if (!data.isEmpty()){
        JSONObject rootObject = new JSONObject(data);
        // 关键修正:获取键"1"对应的JSONObject,而非JSONArray
        JSONObject targetObject = rootObject.getJSONObject("1");
        
        userList.clear();
        // 直接提取目标对象中的a和b值
        String aValue = targetObject.getString("a");
        String bValue = targetObject.getString("b");
        userList.add(aValue);
        userList.add(bValue);
        
        // 必须在主线程更新UI
        runOnUiThread(() -> {
            // 示例:通知列表适配器更新数据
            // yourAdapter.notifyDataSetChanged();
        });
    }
    
    // 关闭资源,避免内存泄漏
    bufferedReader.close();
    inputStream.close();
    httpURLConnection.disconnect();
} catch (Exception e) {
    e.printStackTrace();
}

额外注意事项

  • 网络请求必须放在子线程执行(Android 3.0+强制要求),如果直接在按钮点击的主线程中运行,会抛出NetworkOnMainThreadException,建议用Coroutine、AsyncTask或OkHttp等库简化网络操作。
  • 若要避免键不存在导致的崩溃,可以用optString()替代getString(),它会在键不存在时返回空字符串而非抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:15:03