假设你已经了解JSON数据是怎么一回事了。
1、服务端
服务器端使用json-lib 组装JSON数据的,在Servlet类或者相关容器类中,这里是在struts2中的action类中操作的,代码如下:
List list =userService.getAllObject(); //这里是从数据库查询出相关数据,封装成对象,放入list中的 JSONArray ja =JSONArray.fromObject(list); //组装成JSON数据 System.out.println(" ja -->"+ja.toString()); /*打印出来的数据如下所示 [ {"createDate":"2012-05-24 00:04:10.0","createMan":"system","inteUpdateDate":"", "integralId":-1,"isUpdateInteApp":0,"isUpdateRecApp":0,"lb":0,"needGames":15, "phoneIMEI":"1234556","phoneSystem":"","phoneType":"","recUpdateDate":"", "recomAppId":-1,"screenHeight":0,"screenWidth":0,"type":0,"userId":10100}, {"createDate":"2012-05-24 00:04:56.0","createMan":"system","inteUpdateDate":"", "integralId":-1,"isUpdateInteApp":0,"isUpdateRecApp":0,"lb":0,"needGames":15, "phoneIMEI":"1234557","phoneSystem":"","phoneType":"","recUpdateDate":"", "recomAppId":-1,"screenHeight":0,"screenWidth":0,"type":0,"userId":10101} ] */ HttpServletResponse response =ServletActionContext.getResponse(); PrintWriter out = response.getWriter(); out.write(ja.toString());//返回字符串格式的JSON数据 out.flush(); out.close();
2、客户端
假设服务端提供的接口地址为:http://192.168.1.102:8088/AndroidService/service/getUsers.action
客户端访问服务端及解析服务端返回JSON数据主要代码如下:
private void getLocation() { StringBuilder builder = new StringBuilder(); HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet("http://192.168.1.102:8088/AndroidService/service/getUsers.action"); try { HttpResponse response = client.execute(get); //这里使用的是Get方式访问服务端接口,当然也可以使用Post方式 BufferedReader reader = new BufferedReader(new InputStreamReader( response.getEntity().getContent())); for (String s = reader.readLine(); s != null; s = reader.readLine()) { builder.append(s); } JSONArray array = new JSONArray(new String(builder.toString())); for (int i = 0; i < array.length(); i++) { JSONObject item = array.getJSONObject(i); String userId = item.getString("userId"); String phoneIMEI = item.getString("phoneIMEI"); String createMan = item.getString("createMan"); String createDate = item.getString("createDate"); //这里txtInfo是一个TextView控件 txtInfo.append("userId:"+userId+" phoneIMEI:"+phoneIMEI +" createMan:"+createMan+" createDate:"+createDate); } } catch (Exception e) { e.printStackTrace(); } }