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

Android AsyncTask解析JSON报错‘no value for data’求助

排查“no value for data” JSON解析错误

嘿,我一眼就定位到问题所在了!你的核心错误出在JSONObject的初始化方式上——你现在创建了一个空的JSON对象,根本没用到接口返回的真实数据!

错误根源

你当前的代码里写了:

JSONObject jsonObject = new JSONObject();

这行代码会生成一个完全空的JSON对象,和你从接口拿到的json字符串没有任何关联。空对象里当然找不到data字段,所以才会抛出“no value for data”的异常。

修复方案

把接口返回的JSON字符串传入JSONObject的构造方法,这样才能解析真实的响应数据:

JSONObject jsonObject = new JSONObject(json);

修正后的关键代码片段

if (json != null) {
    try {
        // 重点:传入接口返回的json字符串,而非创建空对象
        JSONObject jsonObject = new JSONObject(json);
        JSONArray data = jsonObject.getJSONArray("data");
        for (int i = 0; i < data.length(); i++) {
            JSONObject ar = data.getJSONObject(i);
            String aset = ar.getString("name");
            JSONObject parent = ar.getJSONObject("asset_parent");
            String nama = parent.getString("name");
            // 建议指定泛型,避免类型警告
            HashMap<String, String> map = new HashMap<>();
            map.put(in_aset, aset);
            map.put(in_ruang, nama);
            data_map.add(map);
        }
    } catch (final JSONException e) {
        Log.e(TAG, "Json parsing error: " + e.getMessage());
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(getActivity().getApplicationContext(), "Json parsing error: " + e.getMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }
}

额外优化建议

AsyncTask的onPostExecute方法本身就是在UI线程执行的,你可以把UI更新逻辑移到这里,省去runOnUiThread的调用,让代码更简洁:

@Override
protected void onPostExecute(String s) {
    pDialog.dismiss();
    // 在这里更新ListView
    list = (ListView) getView().findViewById(R.id.baik_list);
    adapter = new AssetsAdapter(getActivity(), data_map);
    list.setAdapter(adapter);
    setListViewHeightBasedOnChildren(list);
}

这样就可以把doInBackground里的那段UI更新代码删掉啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:39:56