android – 如何在volley中发送json数组作为post请求?

前端之家收集整理的这篇文章主要介绍了android – 如何在volley中发送json数组作为post请求?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用volley进行json解析.我想使用POST向服务器端发送一些数据.我正在尝试发送.现在任何人都可以告诉我如何将过滤器阵列发送到服务器?

以下是我的代码段.我也试过Hashmap和Jsonobject.但得到这个错误.

错误

org.json.JSONException: Value  at Data of type java.lang.String cannot be converted to JSONObject

格式

{
    "typeName": "MANUFACTURER","typeId": 22,"cityId": 308,"sortBy": "productname","sortOrder": "desc","filter":[
                {
                    "filterId":101,"typeName":"CAT_ID","filterId":102,"typeName":"CAT_ID"
                }
             ]
}

对于Code Check pastie

https://pastebin.com/u5qD8e2j

解决方法

如果您在调用API时遇到问题,那么这将对您有所帮助.
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest jobReq = new JsonObjectRequest(Request.Method.POST,url,jObject,new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject jsonObject) {

            }
        },new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {

            }
        });

queue.add(jobReq);

其中jObject是您要发送到服务器的JSON数据.

JSONArray的实现类似.而不是JsonObjectRequest
使用JsonArrayRequest并发送jArray而不是jObject.

对于创建json数组,只需做一点调整

JSONArray array=new JSONArray();

for(int i=0;i<filter_items.size();i++){
    JSONObject obj=new JSONObject();
    try {
        obj.put("filterId",filter_items.get(i));
        obj.put("typeName","CAT_ID");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    array.put(obj);
}

最后添加json数组如下

jsonParams.put("filter",array);

在您的情况下,您将Json数组转换为字符串

猜你在找的Android相关文章