如何发送创建一个JSON字符串并将其从服务器发送到android?

时间:2011-06-16 12:48:15

标签: java android json servlets gson

在我的应用程序中,用户将预先形成HTTPrequest以从服务器检索数据。

目前在服务器端,我预先形成数据库选择语句,然后使用ResultSetDynaBean检索每一行并转换为对象并存储在ArrayList中。一切正常。

 ArrayList<ParkingSpot> spotsList

然后我使用google GSON库将每个对象转换为JSON字符串

ArrayList<String> jsonStrings = new ArrayList<String>();
    Gson gson = new Gson();
    for (ParkingSpot ps : spotsList) {
        String json = gson.toJson(ps);
        jsonStrings.add(json);
    }

每个json字符串都是这样的

{"address":"York Road","zone":"Green","startTime":7.0,"endTime":24.0,"timeAdded":"Jun 16, 2011 11:53:27 AM","psId":898}

我需要发送多达1000个上述字符串

如您所见,我将每个添加到字符串ArrayList。我不认为这是正确的。

我应该如何将信息发送到Android手机。

从GSON库我可以在Android手机上调用以下内容

 Spot spot = gson.fromJson(jsonString, Spot.class);
          System.out.println(spot);

但是我不知道如何从我的Servlet的响应中检索jsonString(我也不知道如何在servlet端设置它)

2 个答案:

答案 0 :(得分:1)

我没有太多解析JSON字符串的经验,但是要从响应中检索字符串,您可以使用以下内容:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://www.google.com"); //replace URL to your service

httpResponse = client.execute(request);
HttpEntity entity = httpResponse.getEntity();

if(entity != null){
    InputStream is = entity.getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    while((line = reader.readLine()) != null){
        sb.append(line + "\n");
    }
    JSONString = sb.toString();
}

您当然也可以使用POST方法。

希望这会有所帮助:D

答案 1 :(得分:1)

我看到你使用gson。这真的很容易:

<强>了Serverside:

ArrayList<ParkingSpot> spotsList = ...
String json = gson.toJson(spotsList);

这一切都在服务器端。

<强>客户机侧:

要建立连接并阅读回复,请使用marqss的答案。要将json放入列表,请使用:

List<ParkingSpot> list = gson.fromJson(json, new TypeToken<List<ParkingSpot>>(){}.getType());