JSONException:Web服务中没有值

时间:2014-05-16 01:19:27

标签: android json web-services

我正在尝试从服务器获取JSON响应,并且url中的对象是:

{"nombre": "Christian", "ap_paterno": "Consuelo", "ap_materno": "Mayen",
 "num_telefonico": "5555555", "calle": "calle", "colonia": "colonia", 
 "numero": 43}

我希望获得“nombre值,但我得到:

05-15 20:09:51.327: W/System.err(10542): org.json.JSONException: No value for nombre
05-15 20:09:51.327: W/System.err(10542):    at org.json.JSONObject.get(JSONObject.java:355)
05-15 20:09:51.327: W/System.err(10542):    at org.json.JSONObject.getString(JSONObject.java:515)
05-15 20:09:51.327: W/System.err(10542):    at com.example.mibanco.MainActivity$obtieneJSON.doInBackground(MainActivity.java:86)
05-15 20:09:51.327: W/System.err(10542):    at com.example.mibanco.MainActivity$obtieneJSON.doInBackground(MainActivity.java:1)
05-15 20:09:51.327: W/System.err(10542):    at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-15 20:09:51.327: W/System.err(10542):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-15 20:09:51.327: W/System.err(10542):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-15 20:09:51.327: W/System.err(10542):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-15 20:09:51.327: W/System.err(10542):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-15 20:09:51.327: W/System.err(10542):    at java.lang.Thread.run(Thread.java:841)

我的代码是:

   class obtieneJSON extends AsyncTask<Boolean, Boolean, Boolean> {

        @Override
        protected Boolean doInBackground(Boolean... params) {

            JSONParser jsonparser = new JSONParser();

            JSONObject json = jsonparser.getJSONFromUrl("http://192.168.1.68:8000/api/clientes/1/?format=json");

            try {
                texto = json.getString("nombre");
                System.out.println(texto);
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            runOnUiThread(new Runnable() {
                public void run() {
                    TextView et = (TextView)findViewById(R.id.ETInformacion);
                    et.setText(texto);
                }
            });

            return null;
        }
    }

我认为异常是在try / catch块中发出的,但最后问题不是求解器,即使我使用JSON对象的另一个属性。

2 个答案:

答案 0 :(得分:0)

您的JSON响应返回JSONArray。 所以你必须将JSONParser解析为JSONArray。

JSONArray json =(JSONArray)jsonparser.getJSONFromUrl(url);

如果你想要对JSONObject做出回应,你必须像这样返回......

{“jsonobjectname”:{“nombre”:“Christian”,“ap_paterno”:“Consuelo”,“ap_materno”:“Mayen”,  “num_telefonico”:“5555555”,“calle”:“calle”,“colonia”:“colonia”,  “numero”:43}}

答案 1 :(得分:0)

尝试在开始和结束时使用[]

[{"nombre": "Christian", "ap_paterno": "Consuelo", "ap_materno": "Mayen",
 "num_telefonico": "5555555", "calle": "calle", "colonia": "colonia", 
 "numero": 43}]