W / System.err:org.json.JSONException:notiang

时间:2017-05-02 04:53:07

标签: java android json

我知道这里有几个问题都有相同的主题和错误,但没有一个表明我的问题同样如此,所以我决定在这里发帖,希望有人帮我指出原因。这是代码:

 private void showEmployee(String json){
        try {

            JSONObject jsonObject = new JSONObject(json);
            JSONObject c = jsonObject.getJSONObject(Config.TAG_JSON_ARRAY);
            Log.e("result",json);
            if(c!=null) {
                idwo=c.getString("id");
                String notiangs = c.getString(Config.TAG_NOTIANG);
                String alamats = c.getString(Config.TAG_ALAMAT);
                String gardus = c.getString(Config.TAG_GARDU);
                String penyulangs = c.getString(Config.TAG_PENYULANG);
                String lats = c.getString(Config.TAG_GPSLAT);
                String lons = c.getString(Config.TAG_GPSLON);
                String kettings = c.getString(Config.TAG_JUMLAHKETTING);

                notiang.setText(notiangs);
                alamat.setText(alamats);
                gardu.setText(gardus);
                penyulang.setText(penyulangs);
                lat.setText(lats);
                lon.setText(lons);
                ketting.setText(kettings);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

这是JSON的回应:

 E/result: {"result":{"0":"3","id":"3","1":"abc1235gvv","no_tiang":"abc1235gvv","2":"JTM","jenis_tiang":"JTM","3":"","jumlah_ketting":"","4":"Mangkurayat","alamat":"Mangkurayat","5":"Cilawu","kecamatan":"Cilawu","6":"4555","kodepos":"4555","7":"Jawa Barat","provinsi":"Jawa Barat","8":"Kabupaten Garut","kota":"Kabupaten Garut","9":"adghc","penyulang":"adghc","10":"","gardu":"","11":"2017-05-01 08:49:49","tanggal":"2017-05-01 08:49:49","12":"107.88593833333334","lat":"107.88593833333334","13":"-7.249803333333333","lon":"-7.249803333333333"}}

显然,notiang有一个价值,但我仍然在我的logcat中收到了这个警告:

W/System.err: org.json.JSONException: No value for notiang

5 个答案:

答案 0 :(得分:4)

错误很明显,表示您无法将JSONArray转换为JSONObject,然后您需要更改此行

JSONObject jsonObject = new JSONObject(json);

到这个

JSONArray jsonArray = new JSONArray(json);

然后在for循环中获取索引的JSONObject并执行任何操作

确定您的对象是JSONArray还是JSONObject,您可以执行此操作

String data = "{ ... }";
Object json = new JSONTokener(data).nextValue();
if (json instanceof JSONObject)
  //you have an object
else if (json instanceof JSONArray)
  //you have an array

答案 1 :(得分:0)

当你获得一个json对象数组时,你期待一个json对象。

答案 2 :(得分:0)

更改此行

JSONObject c = jsonObject.getJSONObject(Config.TAG_JSON_ARRAY);

JSONArray peoples = null;

peoples = jsonObject .getJSONArray("Your Array Name/Tag);

问题是你的结果有json数组,你正在尝试将它转换为Json Object。

答案 3 :(得分:0)

try {
        JSONArray jsonArray = new JSONArray(json);
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject c = jsonArray.getJSONObject(i);
            Log.e("result",json);
            if(c!=null) {
                idwo=c.getString("id");
                String notiangs = c.getString(Config.TAG_NOTIANG);
                String alamats = c.getString(Config.TAG_ALAMAT);

                notiang.setText(notiangs);
                alamat.setText(alamats);

            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

答案 4 :(得分:0)

try{

JSONArray jArray= null;

jArray= jsonObject .getJSONArray("Key name);
}catch(Exception e){

}