如何通过json对象键获取字符串以显示未找到的数据, 如果json数组数据可用,则以下代码可以正常工作。如果找不到数据,则显示排球错误,如
com.android.volley.ClientError
public void posLoad(){
progressBar.setVisibility(View.VISIBLE);
String url = getString(R.string.myPostLoad)+"01858456388";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
JSONObject jsonObject = new JSONObject(response);
String err = jsonObject.getString("message");
if (err.equals("no")){
Toast.makeText(MyPosts.this,"No post found",Toast.LENGTH_SHORT).show();
}else{
JSONArray jsonArrayData = jsonObject.getJSONArray("posts");
for (int i=0; i<jsonArrayData.length(); i++){
Post post = new Post();
JSONObject jsonObject1 = jsonArrayData.getJSONObject(i);
//user data
post.setName(jsonObject1.getString("name"));
post.setEmail(jsonObject1.getString("email"));
post.setPhoto(jsonObject1.getString("photo"));
postList.add(post);
}
}
progressBar.setVisibility(View.GONE);
}catch (JSONException e){
e.printStackTrace();
}
postAdapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressBar.setVisibility(View.GONE);
Toast.makeText(MyPosts.this,error.toString(),Toast.LENGTH_SHORT).show();
}
});
MySingleton.getInstance().addToRequestQueue(stringRequest);
}
(1)json响应是找不到数据时
{“消息”:“否”}
(1)json响应是发现数据时
{“职位”:[{“名称”:“ Saif ullah”,“电子邮件”:“ nzsn”,“照片”:“ 01858456387.png”,“ created_at”:“ 2012-03-19 12:57 :42“,” updated_at“:” 2012-03-19 12:57:42“}]}
找不到数据的服务器脚本
echo json_encode(array("message" => "no"));
从第一个响应没有得到字符串。 我该如何解决.....帮助我...
答案 0 :(得分:2)
当响应不是no时,您不会弯腰代码的执行,只需在if之后添加else即可。
if (err.equals("no")){
Toast.makeText(MyPosts.this,"No post found",Toast.LENGTH_SHORT).show();
} else {
JSONArray jsonArrayData = jsonObject.getJSONArray("posts");
...
}