json和xml 两者流程相似,只不过数据格式不同
web端
Servlet
package com.lin.servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.lin.pojo.News; import com.lin.service.impl.VideoNewsService; import com.lin.service.impl.VideoNewsServiceBean; public class ListServlet extends HttpServlet { private static final long serialVersionUID = 1L; private VideoNewsService service=new VideoNewsServiceBean(); public ListServlet() { // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<News> videos=service.getLastNews(); String format=request.getParameter("format"); if("json".equals(format)){ System.out.println("dadawdfafghrh "+format); StringBuilder builder=new StringBuilder(); 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()).append("\""); builder.append("},"); } builder.deleteCharAt(builder.length()-1); builder.append(']'); request.setAttribute("json", builder.toString()); request.getRequestDispatcher("/WEB-INF/page/jsonvideoNews.jsp").forward(request, response); } } } }
jsp
<%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8"%>${json}
可以发现,在服务器端json格式的构建更多的是在Servlet里实现的,因为涉及了很多字符串的操作。而xml格式的构建可以在jsp里轻松的完成。
android端
public static List<News> getJSONLastNews() { String path="http://192.168.189.1:8080/videonews/ListServlet?format=json"; try{ 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); } }catch(Exception e){ e.printStackTrace(); } return null; } /* * json的解析有java自带的解析器 */ public static List<News> parseJSON(InputStream inStream) throws Exception{ List<News> newses=new ArrayList<News>(); byte[] data=StreamTools.read(inStream); String json=new String(data);//chi构造器默认为utf JSONArray array=new JSONArray(json);//json数组 for(int i=0;i<array.length();i++){ JSONObject object= array.getJSONObject(i); News news=new News(object.getInt("id"), object.getString("title"), object.getString("timelength")); newses.add(news); } return newses; }
可以看到json解析时,在构造器里传入了一个字符串。
引入了工具包的一个方法,把流以字节的方式存到数组里。得到字符串。然后在对JSONArray解析。这是和xml解析的不同。
而xml解析是直接对流进行处理的
package com.lin.utils; import java.io.ByteArrayOutputStream; import java.io.InputStream; public class StreamTools { /* * 读取流中的数据 * * */ public static byte[] read(InputStream inStream) throws Exception{ byte[] buffer=new byte[1024]; ByteArrayOutputStream stream=new ByteArrayOutputStream(); int len=0; while((len=inStream.read(buffer))!=-1){ stream.write(buffer,0,len); } inStream.close(); return stream.toByteArray(); } }
相关推荐
C#的一个解析JSON的工具类,像java一样优雅的解析JSON数据,包含有JSONObject和JSONArray对象。 JSONObject json = new JSONObject(); json.Put("sex", "男"); json.Put("age", 123); json.Put("name", "张三"); ...
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里...
用jquery解析JSON数据的方法20110227用jquery解析JSON数据的方法20110227
只需包含头文件和源文件即可 解析json数据
Qt利用UDP通信来传输JSON数据以及接收并解析JSON数据,UDP Server端采用Qt Widgets技术,UDP Client端采用Qt Quick技术。
JAVA在线接收解析JSON数据,引用的JSON类为 net.sf.json.JSONArray; net.sf.json.JSONObject;
Vb.net下解析Json数据的类库,提供了ObjectToString,StringToObject等方法,更多封装的方法参考这里:
使用解析JSON文件获取天气预报信息,并将不同城市的天气信息显示在主界面中,应用程序运行时界面如图1所示。单击其他城市按钮时,将显示相应城市对应的天气信息,如图2所示4.在模块对应的包名下创建JSON数据对应的...
Android解析Json数据的PPT和源码
Qt post请求发送和解析json数据完整示例,有完整的设置框架,可以发送和解析多个post请求
使用该方法可以轻松解析JSON数组,方便取出JSON数据
1、生成Json数据 2、使用Gson解析Json数据(单个json对象、json数组和json对象内嵌json数组) // 这里有两篇好心人的博文,有详细的讲解 http://www.jb51.net/article/32547.htm ...
cJSON使用的例子,介绍cJSON怎样解析JSON数据 里面包含2个例子,一个介绍如何制作JSON数据,另一个介绍怎么解析JSON数据 解析JSON文本的步骤: 1、调用cJSON_Parse函数解析JSON数据; 2、根据名称依次获取各个JSON...
ajax解析json型的数据,2中方法,有列子,也有注释,很详细。新手可以学习一下。主要就是功能代码。
Delphi解析json数据。参考本方法可以用Delphi直接解析json数据,以弥补Delphi不能直接解析json数据的问题。
解析Json数据
C#解析Json数据(.html),C#解析Json数据(.html)(网页链接)
Android Studio下使用Google Gson解析Json数据示例
json数据解析
jquery解析JSON数据的方法.docx