在我的应用程序中,用户将预先形成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端设置它)
答案 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());