我正在尝试从服务器获取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对象的另一个属性。
答案 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}]