如何在android中使用HttpPost发送多个Json数据

时间:2015-02-12 21:50:29

标签: android json

[
   {
    "val1" : -1,
    "val2" : -1,
    "id" : 0,
    "diff" : -1,
    },
{
   ….
 }
]

我有一个需要发送到服务器的数据列表。我通过HttpPost发送数据 我在Json中获取了数据并创建了一个字符串,如下所示,但是如何将所有数据发送到一起而不仅仅是一个字符串。在服务器端,它需要50个这样的数据列表。

      JSONObject jsonObject = new JSONObject();
      ArrayList<String> mydata = new ArrayList<String> data();

      String json = "";
      jsonObject.accumulate("val1", val);
      jsonObject.accumulate("val2", val2);
      jsonObject.accumulate("id", id);
      jsonObject.accumulate("diff", diff);
      json = jsonObject.toString();
       mydata.add(json);

编辑:关于使用JSONArray:{“Status”:{“Code”:699,“Description”:“无法将当前JSON数组(例如[1,2,3])反序列化为类型'System.Single',因为该类型需要一个JSON原始值(例如字符串,数字,布尔值,null)才能正确反序列化。\ u000d \ u000a要解决此错误,请将JSON更改为JSON原始值(例如字符串,数字,布尔值,null)或更改反序列化类型为数组或实现集合接口的类型(例如ICollection,IList),如List可以从JSON数组反序列化.JsonArrayAttribute也可以添加到类型中以强制它从JSON数组反序列化。\ u000d \ u000aPath'[0] .Speed',第1行,第11位。“}}

1 个答案:

答案 0 :(得分:0)

您需要使用JsonArray实例,而不是将JsonObject结果字符串附加到ArrayList。

,第二个错误是您使用accumulate而不是put将键映射到值,因为accumulate方法将值附加到映射到您提供的键的JsonArray。

JSONArray jsonArray = new JSONArray();
// for every item in the 50 item you need to send
JSONObject obj = new JSONObject();
jsonObject.put("val1", val);
jsonObject.put("val2", val2);
jsonObject.put("id", id);
jsonObject.put("diff", diff);
jsonArray.put(obj);
// then you need to send the data to the server
String data = jsonArray.toString();