Android数据转化为Json形式给客户端及客户端使用json数据

(1)首先创建生成原始数据的service,VideoNewsServiceBean,这是一个接口的实现类,接口的功能如下:

{/*** 获取最新的视频资讯* @return*/public List<News> getLastNews();}

News类

public class News {private Integer id;private String title;private Integer timelength;public News(Integer id, String title, Integer timelength) {this.id = id;this.title = title;this.timelength = timelength;}//get/set方法}

接口的实现类:生成一些假数据

{public List<News> getLastNews(){List<News> newes = new ArrayList<News>();newes.add(new News(90, “喜羊羊与灰太狼全集”, 78));newes.add(new News(10, “实拍舰载直升东海救援演习”, 28));newes.add(new News(56, “喀麦隆VS荷兰”, 70));return newes;}}

(2)通过servlet将数据返回给客户端:ListServlet.java

{serialVersionUID = 1L;private VideoNewsService service = new VideoNewsServiceBean();(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {List<News> videos = service.getLastNews();// [{id:56,title:”xxxxx”,timelength:90},{id:16,title:”xbbx”,timelength:20}]StringBuilder builder = new StringBuilder();//对数据进行追加为json格式builder.append(‘[‘);for (News news : videos) {builder.append(‘{‘);builder.append(“id:”).append(news.getId()).append(‘,’);builder.append(“title:\””).append(news.getTitle()).append(“\”,”);builder.append(“timelength:”).append(news.getTimelength());builder.append(“},”);}//删除最后一个多的字符builder.deleteCharAt(builder.length() – 1);builder.append(‘]’);//将数据设置在request域中request.setAttribute(“json”, builder.toString());request.getRequestDispatcher(“/WEB-INF/page/jsonvideonews.jsp”).forward(request, response);}}

(3)例如:当客户端通过jsp页面请求该servlet的时候就可以返回数据(使用的是el表达式)

<

(4)在客户端取出数据 同样的第一步仍是创建一个News的类,这里省略 创建一个获取Json的service,,VideoNewsService.java

{/*** 获取最新的视频资讯* @return* @throws Exception*/public static List<News> getJSONLastNews() throws Exception{String path = “服务器请求servlet的地址”;URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(5000);conn.setRequestMethod(“GET”);if(conn.getResponseCode() == 200){InputStream inStream = conn.getInputStream();return parseJSON(inStream);}return null;}/*** 解析JSON数据* @param inStream* @return*/private static List<News> parseJSON(InputStream inStream) throws Exception{List<News> newses = new ArrayList<News>();byte[] data = StreamTool.read(inStream);String json = new String(data);//因为数据是类似于数组的形式重复的使用JSONArrayJSONArray array = new JSONArray(json);for(int i = 0 ; i < array.length() ; i++){JSONObject jsonObject = array.getJSONObject(i);News news = new News(jsonObject.getInt(“id”), jsonObject.getString(“title”), jsonObject.getInt(“timelength”));newses.add(news);}return newses;}}

这里边使用了一个工具类StreamTool.java,将输入流转化为byte数据返回

{/*** 读取输入流数据*/[] read(InputStream inStream) throws Exception {ByteArrayOutputStream outStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = inStream.read(buffer)) != -1) {outStream.write(buffer, 0, len);}inStream.close();return outStream.toByteArray();}

然后皆可以在具体的界面中进行数据的使用:(这里为一个listview设置值) MainActivity.java

{(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);ListView listView = (ListView) this.findViewById(R.id.listView);try {List<News> videos = VideoNewsService.getJSONLastNews();//需修改成你本机的Http请求路径//这里使用的List<HashMap<String, Object>>可以将数据放入hashmap之后再放入list集合中List<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>();for(News news : videos){HashMap<String, Object> item = new HashMap<String, Object>();item.put(“id”, news.getId());item.put(“title”, news.getTitle());item.put(“timelength”, getResources().getString(R.string.timelength)+ news.getTimelength()+ getResources().getString(R.string.min));data.add(item);}//为listview设置适配器SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,new String[]{“title”, “timelength”}, new int[]{R.id.title, R.id.timelength});listView.setAdapter(adapter);} catch (Exception e) {e.printStackTrace();}}}

到此json数据的生成客客户端使用json数据操作已经完成!

有的旅行是为了拓宽眼界,浏览风景名胜。

Android数据转化为Json形式给客户端及客户端使用json数据

相关文章:

你感兴趣的文章:

标签云: