Put ArrayList into param JsonObject

前端 未结 3 1420
再見小時候
再見小時候 2020-12-19 11:30

i must do i request with Volley Framework. This is a POST request with JSONObject.

I must pass one string and one JSONArray..but how i can?

I start with this

相关标签:
3条回答
  • 2020-12-19 12:08

    JSONObject can take in Java Objects, try using

    Map<String,Object> 
    

    something like this:

        String mUrl;  //initialized somewhere else
        ArrayList<String> mUrlDove;  //initialized somewhere else
    
        Map<String, Object> 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<JSONObject>()
                {
                    @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);
    

    this works for me with complex objects like

     Map<String,<List<Map<String,Object>>>
    

    with the most inner objects being Strings and Integers, and the List being initialized as a new ArrayList.

    Hope this Helps!

    0 讨论(0)
  • 2020-12-19 12:18

    you need to make a JSON Array first and then store that

    private String mUrl;
    private ArrayList<String> mUrlDove;
    
    HashMap<String, String> params = new HashMap<String, String>();
            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<String, String> getHeaders() throws AuthFailureError {
                    return app.getInstance().createBasicAuthHeader();
                }
            };
    
    0 讨论(0)
  • 2020-12-19 12:25

    try passing JSONObject instead of 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<String, String> getHeaders() throws AuthFailureError {
                    return app.getInstance().createBasicAuthHeader();
                }
            };
    

    for reference in parsing json https://stackoverflow.com/a/17810270/4810752

    0 讨论(0)
提交回复
热议问题