2011-06-16 146 views
0

在我的应用程序中,用户将执行HTTPrequest以从服务器检索数据。如何发送创建一个JSON字符串,并将其从服务器发送到android?

目前在服务器端,我执行数据库选择语句,然后使用ResultSetDynaBean来检索每一行并将其转换为对象并存储在ArrayList中。这一切工作正常。

ArrayList<ParkingSpot> spotsList 

然后我使用谷歌GSON库

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转换eachobject到一个JSON字符串我需要发送

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

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

从GSON库我可以调用下面的Android手机上

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

但我不知道如何从响应检索jsonString我Servlet(我也不知道怎么就设置该servlet侧要么)

回答

1

我看你使用GSON。这是与它很容易:

Serverside集团:

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

多数民众赞成在服务器端。

客户方:

要进行连接,并读取响应使用marqss的答案。要使json进入列表,请使用:

List<ParkingSpot> list = gson.fromJson(json, new TypeToken<List<ParkingSpot>>(){}.getType()); 
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

相关问题