2017-10-11 12 views
0

enter image description hereさまざまなフィールドを含むjson配列にパラメータとしてオブジェクトのarraylistを送信するには、androidのurlにvolleyを使用しますか?

画像に示さPRODUCT_ID、UNIT_PRICE及び量を含む郵便配達にJSON配列。

オブジェクトのArrayListをパラメータとして投稿して、JSON配列に記述されているそれぞれのフィールドに値を正しく設定する際に問題が発生しました。私の問題を解決できる人は誰ですか?以下は enter image description here

私のJavaコードです: 公共ボイドplaceOrder(最終ArrayListのproductArrayList){

btnPlaceOrder.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      String urlPlaceOrder = "http://radial-energy.com/radial/api/place-order"; 

      StringRequest stringRequest = new StringRequest(Request.Method.POST, urlPlaceOrder, 
        new Response.Listener<String>() { 
         @Override 
         public void onResponse(String response) { 
          Toast.makeText(OrderDetails.this, "Response: " + response, Toast.LENGTH_SHORT).show(); 

          JSONObject jsonObjectResponse; 

          try { 
           jsonObjectResponse = new JSONObject(response); 

           boolean status = jsonObjectResponse.getBoolean("success"); 

           if (status) { 

          Toast.makeText(OrderDetails.this, "Order placed successfully!", Toast.LENGTH_SHORT).show(); 

            Intent placeOrderIntent = new Intent(OrderDetails.this,Home.class); 
            startActivity(placeOrderIntent); 

           } else { 
            Toast.makeText(OrderDetails.this, "Nothing!", Toast.LENGTH_SHORT).show(); 
           } 
          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 
         } 
        }, 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 

          Toast.makeText(OrderDetails.this, error.getMessage(), 
            Toast.LENGTH_SHORT).show(); 
         } 
        }) { 
       @Override 
       protected Map<String, String> getParams() throws AuthFailureError { 

        Map<String, String> params = new HashMap<String, String>(); 

        params.put("user_id", getUserId() + ""); 
        params.put("distributor_id", 1 + ""); 

        for (int i = 0; i < productArrayList.size(); i++) { 
         params.put("items", productArrayList.get(i). 
        } 

        params.put("total", totalPriceSum + ""); 
        params.put("mechanic_id", 2 + ""); 

        return params; 
       } 
      }; 

      Volley.newRequestQueue(OrderDetails.this).add(stringRequest); 

     } 
    }); 
} 
+0

多分あなたは文字列として送信できますか?希望[this](https://stackoverflow.com/questions/42543111/how-to-send-jsonarray-to-server-in-android-using-stringentity)リンクはあなたを助けます。 –

+0

これは動作していません... –

+0

エラーが発生した場合は貼り付けできますか? –

答えて

0
JSONArray jsonArray = new JSONArray(productArrayList); 
String jsonArrayString = jsonArray.toString(); 
params.put("items", jsonArrayString + ""); 

文字列にJSONArrayよりJSONArrayへ 変換アレイリストを試してみて、それを

を置きます
+0

今、jsonArrayStringがnullを返しますか? –

+0

productArrayListはnullですか? –

+0

いいえ、データオブジェクト –

0

gsonを使用してリストをJsonに変換できます。以下のように試してください:

@Override 
protected Map<String, String> getParams() throws AuthFailureError { 

    Map<String, String> params = new HashMap<String, String>(); 
    params.put("user_id", getUserId() + ""); 
    params.put("distributor_id", 1 + ""); 

    // Gson library does this for you 
    params.put("items", new Gson().toJson(productArrayList))); 

    params.put("total", totalPriceSum + ""); 
    params.put("mechanic_id", 2 + ""); 

    return params; 
} 
}; 
関連する問題