Reputation: 384
I am trying to make a volley POST request with a array as my parameter, for example I want to POST
{"types":[1,2,3]}
what I have now is a string
{"types":"[1,2,3]"}
This is how I made my volley request:
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject = new JSONObject();
try{
jsonObject.put("types", list);
jsonArray.put(jsonObject);
System.out.println(jsonObject);
}catch(Exception e){
}
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, jsonObject,
new Response.Listener<JSONObject>(){
@Override
public void onResponse(JSONObject response) {
Log.e("Response", response.toString());
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error.Response", error.toString());
String json = null;
NetworkResponse response = error.networkResponse;
if(response != null && response.data != null){
switch(response.statusCode){
case 400:
json = new String(response.data);
System.out.println(json);
break;
}
}
}
})
{
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Authorization", Token);
return headers;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jsonObjectRequest);
List is an array list declared as:
List<Integer> list = new ArrayList<Integer>();
I am assuming that jsonObject.put("types", list) will turn my array into a list, how should I solve this problem?
Upvotes: 1
Views: 4178
Reputation: 3725
Instead of List
, try JSONArray
.
JSONArray types=new JSONArray();
types.put(1);
types.put(2);
types.put(3);
jsonObject.put("types", types);
jsonArray.put(jsonObject);
This should fix your issue
Upvotes: 4