Android JSONException:Web服务中的没有值

Android JSONException:Web服务中的没有值,android,json,web-services,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响应,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;
        }
    }
类obtieneJSON扩展异步任务{
@凌驾
受保护的布尔doInBackground(布尔…参数){
JSONParser JSONParser=新的JSONParser();
JSONObject json=jsonparser.getJSONFromUrl(“http://192.168.1.68:8000/api/clientes/1/?format=json");
试一试{
texto=json.getString(“nombre”);
System.out.println(texto);
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
runOnUiThread(新的Runnable(){
公开募捐{
TextView et=(TextView)findViewById(R.id.ETInformacion);
et.setText(texto);
}
});
返回null;
}
}

我假设异常是在try/catch块中发送的,但在最后,即使我使用JSON对象的另一个属性,问题也没有得到解决。

您的JSON响应返回JSONArray。 因此,您必须将JSONParser解析为JSONArray

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

如果你想得到对JSONObject的响应,你必须像这样返回

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

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

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

与问题无关,但还是有一个建议:您不需要手动使用RunUnuithRead发布结果,这正是
AsyncTask.onPostExecute()
方法的目的。请查看此链接: