将ArrayList放入param JsonObject中

我必须要求使用Volley Framework。 这是一个带有JSONObject的POST请求。

我必须传递一个字符串和一个JSONArray ..但我怎么能?

我从这开始:

private String mUrl; private ArrayList mUrlDove; HashMap params = new HashMap(); params.put("url", mUrl); params.put("urlDove", mUrlDove); ---> Wrong because mUrlDove is not a String mUrl = app.getInstance().getmUrlRestWS() + getString(R.string.path); JsonObjectRequest mRequest = new JsonObjectRequest( mUrl, new JSONObject(params), createMyReqSuccessListener(), createMyReqErrorListener()) { @Override public Map getHeaders() throws AuthFailureError { return app.getInstance().createBasicAuthHeader(); } }; 

如果我尝试使用浏览器,我必须设置:

 { "url": "www.secret.com", "urlDove" : [ "www.google.com","www.yahoo.com"] } 

你需要先制作一个JSON数组然后存储它

 private String mUrl; private ArrayList mUrlDove; HashMap params = new HashMap(); params.put("url", mUrl); JSONArray jsArray = new JSONArray(mUrlDove); params.put("urlDove", jsArray.toString()); mUrl = app.getInstance().getmUrlRestWS() + getString(R.string.path); JsonObjectRequest mRequest = new JsonObjectRequest( mUrl, new JSONObject(params), createMyReqSuccessListener(), createMyReqErrorListener()) { @Override public Map getHeaders() throws AuthFailureError { return app.getInstance().createBasicAuthHeader(); } }; 

尝试传递JSONObject而不是hashmap

 JSONObject params = new JSONObject(); params.put("url", "www.secret.com"); JSONArray urlDove = new JSONArray(); urlDove.put("www.google.com"); urlDove.put("www.yahoo.com"); params.put("urlDove", urlDove); JsonObjectRequest mRequest = new JsonObjectRequest( mUrl, params, createMyReqSuccessListener(), createMyReqErrorListener()) { @Override public Map getHeaders() throws AuthFailureError { return app.getInstance().createBasicAuthHeader(); } }; 

在解析json时参考https://stackoverflow.com/a/17810270/4810752

JSONObject可以接受Java对象,尝试使用

 Map 

像这样的东西:

  String mUrl; //initialized somewhere else ArrayList mUrlDove; //initialized somewhere else Map jsonParams = new HashMap<>(); jsonParams.put("url", mUrl); jsonParams.put("urlDove", mUrlDove); JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, new JSONObject(jsonParams), new Response.Listener() { @Override public void onResponse(JSONObject response) { Log.d("Volley Response: ", response.toString()); //do the other stuff you need... } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { if (null != error.networkResponse) { Log.d(" Volley Error Code: ", "" + error.networkResponse.statusCode); //probably throw an Exception or some MessageEvent } } }); requestQueue.add(request); 

这适用于复杂的物体,如

  Map>> 

最内部对象是字符串和整数,并且List被初始化为新的ArrayList。

希望这可以帮助!