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", "张三"); ...
在AJAX中解析JSON数据是常见的操作,尤其在前后端交互时。本篇将详细讲解两种AJAX解析JSON数据的方法,并提供示例代码。 方法一:使用`XMLHttpRequest`对象 在JavaScript中,我们可以使用内置的`XMLHttpRequest`...
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里...
在JavaScript和jQuery中,解析JSON数据是常见的任务,特别是在与服务器进行异步通信时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。在jQuery中...
"Vb.net解析Json数据的类库"强调了这个工具的核心功能,即它是一个专门针对JSON格式的数据解析工具,适用于Visual Basic .NET编程语言。 描述中提到的"ObjectToString"和"StringToObject"是类库中的关键方法。`...
// 解析JSON数据 QByteArray jsonData = reply->readAll(); QJsonDocument doc = QJsonDocument::fromJson(jsonData); if (doc.isNull()) { qDebug() << "Invalid JSON data"; } else { QJsonObject ...
这个资料包包含了一个关于Android解析JSON数据的PPT和源码,可以帮助开发者深入理解和实践Android中如何处理JSON数据。 首先,我们要理解JSON的基本结构。JSON由键值对组成,键用引号括起来,后跟冒号,值可以是...
标题中的“纯pb代码编写的解析json数据,含生成、格式化等”指的是使用PowerBuilder(简称PB)这种编程语言,完全不依赖其他外部库,实现了JSON数据的解析、生成和格式化的功能。PB是一种面向对象的编程工具,主要...
JAVA在线接收解析JSON数据,引用的JSON类为 net.sf.json.JSONArray; net.sf.json.JSONObject;
通过以上步骤,我们可以在Kettle中有效地解析JSON数据,并将其写入数据库中。这不仅可以提高数据处理的效率,还可以确保数据的一致性和准确性。此外,使用Java库如`JSON Simple`可以更加灵活地处理各种类型的JSON...
在本文中,我们将深入探讨如何使用Gson解析JSON数据,包括处理简单JSON和复杂的JSON结构。 首先,我们要了解JSON的基本概念。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,...
在C语言环境中,处理JSON数据时,cJson提供了一个简单而高效的解决方案。它允许开发者轻松地将JSON字符串解析为C结构体,同时也支持将C结构体转换为JSON格式的字符串。 ### JSON基础 JSON(JavaScript Object ...
使用解析JSON文件获取天气预报信息,并将不同城市的天气信息显示在主界面中,应用程序运行时界面如图1所示。单击其他城市按钮时,将显示相应城市对应的天气信息,如图2所示4.在模块对应的包名下创建JSON数据对应的...
本篇文章将详细介绍如何在Android Studio环境下使用Google Gson解析Json数据。 首先,我们需要在项目中引入Gson库。打开build.gradle模块文件,并在dependencies块中添加以下依赖: ```groovy dependencies { ...
VC++要使用JSON来解析数据,这个源码工程进行编译链接就可以得到一个静态链接库json.lib,只需要将这个lib文件拷贝到你的工程目录下,并将\include\json复制到工程目录下,然后将这些头文件加到工程中去就可以了。...
本文将详细介绍如何在C#中解析JSON数据。 首先,C#提供了多种库来解析和序列化JSON数据,其中最常用的是Newtonsoft.Json,也被称为Json.NET。Json.NET是.NET平台上功能强大的JSON库,支持.NET Framework、.NET Core...
本篇将详细讲解如何在Android应用中解析JSON数据,主要涉及以下几个方面: 1. JSON基本结构 JSON由两种基本结构构成:对象(Object)和数组(Array)。对象是以花括号 `{}` 包围的键值对集合,键用双引号括起,如`...
在JavaScript和jQuery中,解析JSON数据是常见的任务,特别是在与服务器进行异步通信时。JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人和机器都能容易地读取和写入数据。当jQuery从服务器...
Delphi解析json数据。参考本方法可以用Delphi直接解析json数据,以弥补Delphi不能直接解析json数据的问题。
本篇文章将深入探讨如何使用json_cpp这个C++库来解析JSON数据,以及提供的sample实例。 json_cpp是一个开源的C++库,它允许开发者方便地读取、写入和操作JSON数据。该库遵循C++11标准,并提供了简单易用的API,使得...