【问题标题】:Not able to make Json right Format无法使 Json 正确的格式
【发布时间】:2018-06-14 18:44:36
【问题描述】:

我想在我的 Json 中以这种格式发布我的数据

Json 格式与我发布的格式不匹配,这就是为什么它在响应中返回 false

{
    "expense" : {
        SiteId as Int
        ItemName as string
        Amount as int
        PaidBy as string,
        Id  -- case of Edit
    },
    "expenseConsumers":[ //Array Start
        {
            "Id": 1,
            "Name": "vick",
            "SiteId": 8,
            "ExpenseConsumerID": 0,
            "isChecked": false
        },
        {
            "Id": 1,
            "Name": "vick",
            "SiteId": 8,
            "ExpenseConsumerID": 0,
            "isChecked": false
        }
    ] //Array End......
}

但问题在于代码中的某个地方。我无法解决。

我的代码

问题出在getParms() 函数中,可能它没有发布格式。

StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_SAVEEXPENSES,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                System.out.println("save Expense  success : " + response.toString());
                // progressBar.setVisibility(View.GONE);
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getContext(), "Volley Error! " + error.toString(), Toast.LENGTH_SHORT).show();
                System.out.println("Volley Error! : " + error.toString() + " and " + error.getMessage());
                // progressBar.setVisibility(View.GONE);
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> parms = new HashMap<>();
                JSONObject js = new JSONObject();
                JSONObject  jsonobject_one = new JSONObject();
                JSONArray    jsonArray=new JSONArray();

                try {
                    jsonobject_one.put("SiteId", Integer.parseInt(sharedPreferences.getString("siteId", "0")));
                    jsonobject_one.put("ItemName", "sabji");
                    jsonobject_one.put("Amount", 560);
                    jsonobject_one.put("PaidBy", 35);
                    jsonobject_one.put("Id", 0);

                    for (int iteration =0;iteration<allConsumerArray.size();iteration++) {
                        JSONObject jsonobject_TWO = new JSONObject();
                        jsonobject_TWO.put("Id", 35);
                        jsonobject_TWO.put("Name", "rana");
                        jsonobject_TWO.put("SiteId", Integer.parseInt(sharedPreferences.getString("siteId","0")));
                        jsonobject_TWO.put("ExpenseConsumerID", 0);
                        jsonobject_TWO.put("isChecked", true);
                        jsonArray.put(jsonobject_TWO);
                    }
                    parms.put("expenseConsumers", jsonArray.toString());

                    parms.put("expense", jsonobject_one.toString());
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                return parms;
            }
        };

RequestQueue requestQueue = Volley.newRequestQueue(getContext());
requestQueue.add(stringRequest);

问题出在 getParms 函数中。

【问题讨论】:

  • 你必须将“expense”和“expenseConsumers”放在 js 反对中,然后将 js 对象放在你的 params 映射中。跨度>

标签: java android json api android-volley


【解决方案1】:

我没有看到您将“jsonobject_one”和“jsonArray”分配给“js”。 您最终的 json 格式数据应与:

js.put("expense", jsonobject_one);
js.put("expenseConsumers", jsonArray);

【讨论】:

  • 那么在 parm 中会返回什么
  • 我没有使用 volley 库,我正在使用改造,在我看来改造比 volley 更好更简单。顺便说一句,你以前看过这个链接吗? stackoverflow.com/questions/46422727/…
猜你喜欢
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
相关资源
最近更新 更多