2017-03-18 98 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) { 

     } 
    }); 
相關問題