2017-03-18 53 views
-3

我试图让“动作” JSON响应的价值,并与一个TextView表现出来, 这里是我的JSON:值在java.lang.String类型的动作真不能转换成JSONArray

{ “动作”: “真正的”}

这里是我的Java代码

StringRequest stringRequest = new StringRequest(Request.Method.POST, reg_url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 


       JSONObject object = new JSONObject(response); 
       JSONArray Jarray = object.getJSONArray("action"); 
       String message = object.getString("action"); 

       for (int i = 0; i < Jarray.length(); i++) 
       { 
        JSONObject Jasonobject = Jarray.getJSONObject(i); 
       } 

       txtproductsenf.setText(message); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }); 

,但我在我的TextView得到什么,我在Android的显示器得到这个:

“值TR ue在java.lang.String类型的操作中无法转换为JSONArray“

我该如何解决这个问题?

+0

'action'不是JSONarray解析此JSON字符串.. 。use'object.getString(“action”);' – rafsanahmad007

+0

你只有一个“action”json对象吗? –

+0

只是想知道...... for循环的目的是什么?它没有做任何事情。 –

回答

1

这是因为该行的faliling:

JSONArray Jarray = object.getJSONArray("action"); 

action实际上是一个JSON对象,而你试图将它转换为JSONArray,因此Exception

下面应该工作:

JSONObject object = new JSONObject(response); 
String message = object.getString("action"); 
0
{"action":"true"} 

它只有JSON对象不是JSON数组所以你会如下

StringRequest stringRequest = new StringRequest(Request.Method.POST, reg_url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 


       JSONObject object = new JSONObject(response); 
       String message = object.getString("action"); 
       txtproductsenf.setText(message); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }); 
相关问题