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

创建JSON数组时出现org.json.JSON.typeMismatch(JSON.java:111)错误求助

问题原因分析

你遇到的org.json.JSON.typeMismatch错误,核心问题是你把整个JSON响应对象直接当成JSON数组来解析了。

先看你收到的返回数据:

{ "result":[ { "@type":"d", "@rid":"#-2:0", "@version":0, "a_adres":"kepez merkez geliyor herkez", "takipkodu":"464664", "agirlik":50 }, { "@type":"d", "@rid":"#-2:1", "@version":0, "a_adres":"merkez mahallesi 4 sok", "takipkodu":"sd4fs654f64", "agirlik":60 } ] }

最外层是一个用{}包裹的JSON对象,真正的数组是这个对象里的result字段。但你的代码里直接用new JSONArray(getResponse)尝试解析整个响应,这就触发了类型不匹配异常——因为你试图把对象转换成数组。

修复后的代码

把onPostExecute方法里的解析逻辑修改成这样:

protected void onPostExecute(String getResponse) {
    ListView liste=(ListView)findViewById(R.id.list_view);
    try {
        // 第一步:先把响应字符串解析成最外层的JSONObject
        JSONObject responseRoot = new JSONObject(getResponse);
        // 第二步:从根对象中取出名为"result"的JSONArray
        JSONArray yukilanarray = responseRoot.getJSONArray("result");
        
        List<Yukilan> yukilanlar = new ArrayList<>();
        // 遍历数组处理每个元素
        for (int i = 0; i<yukilanarray.length();i++){
            Yukilan yeniilan = new Yukilan();
            JSONObject yukilanobject = yukilanarray.getJSONObject(i);
            yeniilan.setAdres(yukilanobject.getString("a_adres"));
            // 注意:agirlik是数字类型,若Yukilan类接收String类型需转换,建议直接用Integer类型更合理
            yeniilan.setAgirlik(String.valueOf(yukilanobject.getInt("agirlik")));
            yeniilan.setTakip_kod(yukilanobject.getString("takipkodu"));
            yukilanlar.add(yeniilan);
        }
        // 设置ListView适配器
        yukilanadapter = new Yukilanadapter(yukilanlar,getApplicationContext());
        liste.setAdapter(yukilanadapter);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}
额外提示

注意返回数据里的agirlik是数字类型(比如50、60),如果你的Yukilan类中agirlik字段是String类型,用String.valueOf()转换是可行的,但更建议把字段改成Integer类型,这样更贴合数据本身的类型,避免不必要的转换操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:58:14