2017-02-10 13 views
0

私はアンドロイドアプリを持っています。そのアプリで私はいくつかの応答を得るサーバー上のいくつかの文字列データを投稿しています。 問題は、私はjsonstringで応答を受け取りましたが、私はこのデータをjson配列にしたいと思います。 althouugh私はJsonArrayRequestを使用していますが、パラメータのpostメソッドを許可していないため、Webサービスが機能しません。 私はStringRequestに固執し、サービスは正常に動作しますが、完全な応答は完全な文字列として返されます。私のデータを表示することができません 私のリストビュー。だからこの問題を解決するには?ここで処理方法アンドロイドボレーでStringRequestを使用しているときのオブジェクトの配列

は私のコードです:ここでは

StringRequest stringRequest = new StringRequest(Request.Method.POST, url, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         Toast.makeText(NewSearchPeople.this, response, Toast.LENGTH_LONG).show(); 

//      search1(); 
         try { 
          JSONArray jsonArray = new JSONArray(response); 

          for(int i=0;i<jsonArray.length();i++){ 
           JSONObject obj = jsonArray.getJSONObject(i); 

           Movie movie = new Movie(); 
           movie.setTitle(obj.getString("fullname")); 
           movie.setThumbnailUrl(obj.getString("image")); 
           movie.setRating(obj.getString("location")); 
           movie.setGenre(obj.getString("Description")); 

           movie.setYear(obj.getInt("id")); 

            movieList.add(movie); 
          } 

         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 


       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(NewSearchPeople.this, error.toString(), Toast.LENGTH_LONG).show(); 
        } 
       }) { 
      @Override 
      protected Map<String, String> getParams() { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("fullname", "pooja"); 

       return params; 
      } 

     }; 

は、JSONレスポンスです:

[ 
{ 
    "id":"442", 
    "fullname":"xyz(18 yr)", 
    "image":"\/2017-02-0823:49:521486619389674.jpg", 
    "location":"lkn","Description":null 
}, 
{ 
    "id":"443", 
    "fullname":"abc(28 yr)", 
    "image":"\/2017-02-0823:51:381486619493934.jpg", 
    "location":"md","Description":null 
}, 
{ 
    "id":"444", 
    "fullname":"Arya(25 yr)", 
    "image":"\/2017-02-0823:52:251486619540695.jpg", 
    "location":"ud","Description":null 
} 
] 
+1

[ボレーライブラリを使用してアンドロイドで入れ子になったjson配列を解析する方法](http://stackoverflow.com/questions/40818219/how-to-parse-nested-json-array-in-android- use-volley-library) –

+0

'JSONArray'がnullかどうかを確認してください。解析を開始するよりも。 – Shailesh

+0

あなたのコードはうまくいくようです。あなたが直面した問題を教えてください。 – Shailesh

答えて

0

は、これは両方の要求StringReqJSONArrayReqで解決することができます。

しかし、より良いJSONArrayRequestを使用してこの問題を解決するために、あなたがタイプに基づいてgetBody()またはgetParams()メソッドを使用することができますpostのparamsを渡すことです。

JsonArrayRequest stringRequest = new JsonArrayRequest(METHOD_TYPE, url,null, 
        new Response.Listener<JSONArray>() { 
         @Override 
         public void onResponse(JSONArray response) { 

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

      } 
     }) { 
      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       return headers == null ? super.getHeaders() : headers; 
      } 

      @Override 
      public byte[] getBody(){ 
       return BODY.toString().getBytes(); 
      } 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("fullname", "pooja"); 
       return params; 
      } 
     }; 

上記は、投稿リクエストで本文を渡す方法の簡単な例です。

時々、匿名のクラス構造が非常に乱雑になって読めないようになるため、具体的なクラスを作成することをお勧めします(静的な内部クラス)。

関連する問題