[英]How to send arraylist of objects as parameter to a json array containing different fields using volley to a url in android?
如图所示,邮递员中的JSON数组包含product_id,unit_price和数量。
我在发布对象的ArrayList作为参数以针对JSON数组中提到的各个字段正确填充值时遇到问题。 请任何可以解决我的问题的人吗?
以下是我的Java代码: public void placeOrder(final 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);
}
});
}
JSONArray jsonArray = new JSONArray(productArrayList);
String jsonArrayString = jsonArray.toString();
params.put("items", jsonArrayString + "");
尝试将数组列表转换为JSONArray而不是将JSONArray转换为字符串并放入
您可以使用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;
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.