我想在我的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函数中。
答案 0 :(得分:0)
我没有看到你分配&#34; jsonobject_one&#34;和&#34; jsonArray&#34;到&#34; js&#34;。 您的最终json格式数据应该与以下内容竞争:
js.put("expense", jsonobject_one);
js.put("expenseConsumers", jsonArray);