无法使Json格式正确

时间:2018-06-14 18:44:36

标签: java android json api android-volley

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

Json Format与我发布的格式不匹配,这就是为什么它在reponse中返回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函数中。

1 个答案:

答案 0 :(得分:0)

我没有看到你分配&#34; jsonobject_one&#34;和&#34; jsonArray&#34;到&#34; js&#34;。 您的最终json格式数据应该与以下内容竞争:

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