首页 > 解决方案 > org.json.JSON.typeMismatch(JSON.java:111)

问题描述

org.json.JSON.typeMismatch(JSON.java:111)尝试创建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
  }
 ]
}

代码:

 protected String doInBackground(String... urls) {
        try {
            String getResponse = get("http://178.18.206.128:2480/command/nakliye/sql/select a_adres,takipkodu,agirlik from yukilan");
            return getResponse;
        } catch (Exception e) {
            this.exception = e;
            return null;
        }
    }

    protected void onPostExecute(String getResponse) {
        ListView liste=(ListView)findViewById(R.id.list_view);

        try {
            JSONArray yukilanarray =  new JSONArray(getResponse);
            List<Yukilan> yukilanlar = new ArrayList<>();
            //Populate the EmployeeDetails list from response
            for (int i = 0; i<yukilanarray.length();i++){
                Yukilan yeniilan = new Yukilan();
                JSONObject yukilanobject = yukilanarray.getJSONObject(i);
                yeniilan.setAdres(yukilanobject.getString(KEY_ADRES));
                yeniilan.setAgirlik(yukilanobject.getString(KEY_AGIRLIK));
                yeniilan.setTakip_kod(yukilanobject.getString(KEY_TAKIPKODU));

                yukilanlar.add(yeniilan);
            }
            //Create an adapter with the EmployeeDetails List and set it to the LstView
            yukilanadapter = new Yukilanadapter(yukilanlar,getApplicationContext());
            liste.setAdapter(yukilanadapter);

        } catch (JSONException e) {
            e.printStackTrace();
        }
       //  System.out.println(getResponse);
    }

请帮忙。

标签: androidarraysjsonstring

解决方案


我认为您在阅读 json 时犯了一个错误。第一个元素是 JSONObject 而不是 JSONArray。下面是修改后的代码。

   protected String doInBackground(String... urls) {
        try {
            String getResponse = get("http://178.18.206.128:2480/command/nakliye/sql/select a_adres,takipkodu,agirlik from yukilan");
            return getResponse;
        } catch (Exception e) {
            this.exception = e;
            return null;
        }
    }

    protected void onPostExecute(String getResponse) {
        ListView liste=(ListView)findViewById(R.id.list_view);

        try {
            JSONObject jsonObject = new JSONObject(getResponse);
            JSONArray yukilanarray =  jsonObject.getJSONArray("result");
            List<Yukilan> yukilanlar = new ArrayList<>();
            //Populate the EmployeeDetails list from response
            for (int i = 0; i<yukilanarray.length();i++){
                Yukilan yeniilan = new Yukilan();
                JSONObject yukilanobject = yukilanarray.getJSONObject(i);
                yeniilan.setAdres(yukilanobject.getString(KEY_ADRES));
                yeniilan.setAgirlik(yukilanobject.getString(KEY_AGIRLIK));
                yeniilan.setTakip_kod(yukilanobject.getString(KEY_TAKIPKODU));

                yukilanlar.add(yeniilan);
            }
            //Create an adapter with the EmployeeDetails List and set it to the LstView
            yukilanadapter = new Yukilanadapter(yukilanlar,getApplicationContext());
            liste.setAdapter(yukilanadapter);

        } catch (JSONException e) {
            e.printStackTrace();
        }
// System.out.println(getResponse);

    }

推荐阅读