- 浏览: 921729 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (251)
- WebService (17)
- IBatis (22)
- Hibernate (1)
- SpringMVC - 基础篇 (32)
- Spring (15)
- Java (11)
- JVM及调优 - 基础篇 (4)
- 集群 (14)
- 数据库 (17)
- WebSphere (5)
- 多线程 (4)
- 集合、容器 (2)
- DB Pool (1)
- Power Designer (5)
- Maven基础 (5)
- JS (14)
- WEB 前端 (5)
- 实用小工具 (17)
- 社会、人 (2)
- 乱七八糟 (18)
- ASM&CGLIB - 基础篇 (12)
- 缓存 (1)
- 性能 (1)
- 设计之殇 (1)
- 分布式事务 (1)
- 单点登录 (11)
- 分布式 Session (4)
- Memcached - 基础篇 (6)
最新评论
-
一笑_奈何:
楼主写的还真行不错。
扫盲贴 - J2EE集群之JNDI集群实现 -
xuezhongyu01:
博主写的很详细,但最后还是没明白,最后调用BasicDataS ...
Spring中的destroy-method方法 -
Mr梁:
commons-fileupload.jar commons- ...
SpringMVC 中文件上传 MultipartResolver -
Eywa:
总结的很不错
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法 -
TryRelax:
fastjson 比 jackson 好用吧?
Spring MVC Jackson DateFormat
本示例基于前面几篇文章的代码。
一、JSON-lib框架,转换JSON
1、首先要去官方下载json-lib工具包
本示例中使用的是v2.3;json-lib还需要以下依赖包:
jakarta commons-lang 2.5
jakarta commons-beanutils 1.8.0
jakarta commons-collections 3.2.1
jakarta commons-logging 1.1.1
ezmorph 1.0.6
官方网址:http://json-lib.sourceforge.net/
然后在工程中添加如下jar包:
如果你还不了解JSON是什么?那么你应该可以看看http://www.json.org/json-zh.html
2、 要转换的JavaBean的代码如下:
package com.wy.pojo;
import java.io.Serializable;
/**
* User对象必须实现serializable接口,因为放在session中的数据必须是可序列化的。
* 否则会出现错误 setAttribute: Non-serializable attribute...
* @author Administrator
* @version 2011-10-6
*/
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private String username;
private String password;
private int age;
private String sex;
private String birthday;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.username +"#"+ this.password +"#"+ this.age +"#"+ this.sex +"#"+ this.birthday;
}
}
3、 新建JsonlibTest测试类,基本代码如下:
package com.wy.junittest; import org.junit.Before; import org.junit.Test; import com.wy.controller.annotation.EntryOrJsonController; public class JsonlibTest { @Before public void setUp() throws Exception { } //@Test public void testEntry2Json() { new EntryOrJsonController().entry2Json(); } //@Test public void testList2Json() { new EntryOrJsonController().list2Json(); } //@Test public void testMap2Json() { new EntryOrJsonController().map2Json(); } //@Test public void testJson2Entry() { new EntryOrJsonController().json2Entry(); } //@Test public void testJson2MorphDynaBean() { new EntryOrJsonController().json2MorphDynaBean(); } //@Test public void testJson2Array() { new EntryOrJsonController().json2Array(); } //@Test public void testJson2List() { new EntryOrJsonController().json2List(); } //@Test public void testJson2Collection() { new EntryOrJsonController().json2Collection(); } @Test public void testJson2Map() { new EntryOrJsonController().json2Map(); } }
JSON中重要的对象:JSONObject、JSONArray、JSONSerializer,下面也是围绕着这几个对象来说明问题。
JSONObject是将Java对象转换成一个json的Object形式。
JSONArray是将一个Java对象转换成json的Array格式。
JSONSerializer也一样可以完成将Java对象转换成JSON。
JSONObject、JSONArray、JSONSerializer不仅可以将Java对象转换成JSON,还可以将JSON转换成Java对象。
Java对象序列化成JSON对象
1、 将JavaObject转换吃JSON字符串
/**
* 1、 将JavaObject转换成JSON字符串
* JSONObject是将Java对象转换成一个json的Object形式,
* JSONArray是将一个Java对象转换成json的Array格式。
* JSONSerializer是将Java对象转换成一个json。
*
* JSONArray、JSONObject、JSONSerializer可以将Java对象转换成JSON,也可将JSON字符串转换成Java对象。
*/
@SuppressWarnings("static-access")
public void entry2Json(){
user = new User();
user.setUsername("wy");
user.setPassword("321");
user.setAge(23);
user.setSex("man");
user.setBirthday(new SimpleDateFormat("yyyy-MM-d").format(new Date()));
log.info("==============Java Bean >>> JSON Object==================");
JSONArray ja = jsonArray.fromObject(user);
JSONObject jo = jsonObject.fromObject(user);
JSON jsja = jsonSerializer.toJSON(user);
log.info("JSONArray: \r\n"+ja+"\r\n"+"JSONObject: \r\n"+jo+"\r\n"+"JSONSerializer: \r\n"+jsja);
}
2、 将JavaList集合转换吃JSON字符串
/**
* 2.将JavaList集合转换吃JSON字符串
* 如果你是转换List集合,一定得用JSONArray或是JSONSrializer提供的序列化方法。
* 如果你用JSONObject.fromObject方法转换List会出现异常,
* 通常使用JSONSrializer这个JSON序列化的方法,它会自动识别你传递的对象的类型,然后转换成相应的JSON字符串。
*/
@SuppressWarnings("static-access")
public void list2Json(){
List<User> userList = new ArrayList<User>();
for(int i=0;i<3;i++){
user = new User();
user.setUsername("wy"+i);
user.setPassword("321"+i);
user.setAge(23+i);
user.setSex("man"+i);
user.setBirthday(new SimpleDateFormat("yyyy-MM-d").format(new Date())+" "+i);
userList.add(user);
}
log.info("==============Java List >>> JSON Object==================");
JSONArray ja = jsonArray.fromObject(userList);
//JSONObject jo = jsonObject.fromObject(userList); +"JSONObject: \r\n"+jo+"\r\n"
JSON jsja = jsonSerializer.toJSON(userList);
log.info("JSONArray: \r\n"+ja+"\r\n"+"JSONSerializer: \r\n"+jsja);
}
3、 将Map集合转换成JSON对象
/** * 3.将Map集合转换成JSON对象 * */ @SuppressWarnings("static-access") public void map2Json(){ user = new User(); user.setUsername("wy"); user.setPassword("321"); user.setAge(23); user.setSex("man"); user.setBirthday(new SimpleDateFormat("yyyy-MM-d").format(new Date())); Map<String, Object> map = new HashMap<String, Object>(); map.put("bool", Boolean.TRUE); map.put("int", 321); map.put("Long", 321.01); map.put("Str", "wy"); map.put("array", new String[]{"wy", "321"}); map.put("func", "function(i){ return this.arr[i]; }"); map.put("user", user); log.info("==============Java Map >>> JSON Object=================="); JSONArray ja = jsonArray.fromObject(map); JSONObject jo = jsonObject.fromObject(map); JSON jsja = jsonSerializer.toJSON(map); log.info("JSONArray: \r\n"+ja+"\r\n"+"JSONObject: \r\n"+jo+"\r\n"+"JSONSerializer: \r\n"+jsja); }
JSON对象反序列化成Java对象
1、 将json字符串转成Java对
/** * 4.JSON对象反序列化成Java对象 * */ public void json2Entry(){ log.info("==============JSON Object String >>> Java Bean =================="); jsonObject = JSONObject.fromObject(json); User joUser = (User)JSONObject.toBean(jsonObject, User.class); log.info("JSONObject: \r\n"+joUser.toString()); }
2、 将json字符串转换成动态Java对象(MorphDynaBean)
/** * 5.将json字符串转换成动态Java对象(MorphDynaBean) * 转换后的对象Object是一个MorphDynaBean的动态JavaBean,通过PropertyUtils可以获得指定的属性的值。 */ public void json2MorphDynaBean(){ log.info("==============JSON Object String >>> Java MorphDynaBean =================="); JSON j = JSONSerializer.toJSON(json); Object obj = JSONSerializer.toJava(j);//MorphDynaBean String userName = null; try { userName = PropertyUtils.getProperty(obj, "username")+""; } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } log.info("JSONSerializer: \r\n"+obj.toString()+" "+userName); }
3、 将json字符串转成Java的Array数组
/** * 6. 将json字符串转成Java的Array数组 * */ public void json2Array(){ log.info("==============JSON String >>> Java Array =================="); json = "[" + json + "]"; jsonArray = JSONArray.fromObject(json); Object[] obj = jsonArray.toArray(); User[] user = (User[])JSONArray.toArray(jsonArray, User.class); log.info("JSONArray: \r\n"+obj+" "+obj[0]+"\r\n"+user+" "+user[0]); }
4、 将JSON字符串转成Java的List集合
/** * 7.将JSON字符串转成Java的List集合 */ public void json2List(){ json = "[" + json + "]"; log.info("==============JSON Array String >>> Java List =================="); jsonArray = JSONArray.fromObject(json); List<User> user = jsonArray.toList(jsonArray, User.class); log.info("JSONArray: \r\n"+user.get(0).toString()); }
5、 将json字符串转换成Collection接口
/** * 8.将json字符串转换成Collection接口 */ public void json2Collection(){ json = "[" + json + "]"; log.info("==============JSON Array String >>> Java Collection =================="); jsonArray = JSONArray.fromObject(json); Collection<User> user = jsonArray.toCollection(jsonArray, User.class); Object[] obj = user.toArray(); log.info("JSONArray: \r\n"+user+" "+obj); }
6、 将json字符串转换成Map集合
/** * 9.将json字符串转换成Map集合 */ public void json2Map(){ log.info("==============JSON String >>> Java Map =================="); jsonObject = JSONObject.fromObject(json); Map<String, Class<?>> clazzMap = new HashMap<String, Class<?>>(); clazzMap.put("A", User.class); Map<String, ?> mapBean = (Map) JSONObject.toBean(jsonObject, Map.class, clazzMap); log.info("JSONObject "+ mapBean); Set<String> set = mapBean.keySet(); Iterator<String> iter = set.iterator(); while (iter.hasNext()) { String key = iter.next(); log.info("JSONObject "+ key + ":" + mapBean.get(key).toString()); } }
将JSON返回到页面
1、HttpServletResponse
/** * 10. 将JSON返回到页面 * @param response */ public String entry2JSON(){ user = new User(); user.setUsername("wy"); user.setPassword("321"); user.setAge(23); user.setSex("man"); user.setBirthday(new SimpleDateFormat("yyyy-MM-d").format(new Date())); log.info("==============Java Bean >>> JSON Object=================="); JSONArray ja = jsonArray.fromObject(user); JSONObject jo = jsonObject.fromObject(user); JSON jsja = jsonSerializer.toJSON(user); return jo.toString(); } /** * 将JSON返回到页面 * @param response */ /*@RequestMapping(value="/returnJson", method=RequestMethod.GET) public void commonReturnType(HttpServletResponse response){ try { PrintWriter out = response.getWriter(); out.print(new EntryOrJsonController().entry2JSON()); out.flush(); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }*/
2、PrintWriter out
/** * 将JSON返回到页面 * 默认策略生产viewName * @param out */ /*@RequestMapping(value="/returnJson", method=RequestMethod.POST) public void commonReturnType(PrintWriter out){//其实也是从HttpServletResponse 通过getWriter()得到out out.print(new EntryOrJsonController().entry2JSON()); out.flush(); out.close(); }*/
3、ModelAndView
@RequestMapping(value="/returnJson", method=RequestMethod.GET) public ModelAndView commonReturnType(){ ModelAndView mav = new ModelAndView(); mav.addObject("json", new EntryOrJsonController().entry2JSON()); mav.setViewName("returnJson"); return mav; }
4、@ResponseBody
/** * 注解 * 将JSON返回到页面 * 默认策略生产viewName * @return */ @ResponseBody @RequestMapping(value="/returnJson", method=RequestMethod.POST) public String commonReturnTypeAnno(){ String jsonAnnotation = new EntryOrJsonController().entry2JSON(); return jsonAnnotation; }
视图层接受JSON
returnJson.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>JSON输出到页面</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> JSON输出到页面. <br/> <c:if test="${json != null}"> 通过GET方式请求并以ModelAndView返回的JSON: ${json} </c:if> <c:if test="${jsonAnnotation != null}"> 完全基于注解返回的JSON: ${jsonAnnotation} </c:if> <form action="<%=path%>/returnJson.do" method="post"> <input type="submit" value="提交" /> </form> </body> </html>
附件中是完整的Controller。
- EntryOrJsonController.zip (2.7 KB)
- 下载次数: 109
发表评论
-
SpringMVC中内容协商【统一资源多种展现json xml html】
2013-09-12 15:58 3371在我们实际的开发中,往往需要SpringMVC ... -
Spring为某个属性注入值或为某个方法的返回值
2013-08-26 16:02 1431项目中用到需要初始化一些数据,Spring提供了filed的 ... -
SpringMVC 基础知识点小结
2013-08-23 15:26 2228参照:http://zachary-g ... -
使用SpringMVC Restful 开发思考
2013-03-18 14:23 1238一、rest思想 此部分 ... -
Spring MVC Jackson DateFormat
2012-10-14 15:59 2149使用Spring MVC 里的Jackson返回JSON时,遇 ... -
SpringMVC 中文件上传 MultipartResolver
2011-12-17 17:44 55040基于前面文章的基础上。 一、准备 需要的jar ... -
SpringMVC 异常处理初探
2011-12-12 12:18 8174Web应用中对于异常的处理方式与其他形式的应用并没有太大的不同 ... -
SpringMVC 使用JSR-303进行校验 @Valid
2011-12-11 18:04 31479一、准备校验时使用的JAR 说明: ... -
SringMVC 注解标记备忘录
2011-12-10 22:42 2083Spring MVC注解开发中常用标签,如下表: ... -
SpringMVC拦截器简单使用
2011-12-10 22:17 93524基于上一篇文章的基础上 一、拦截器的配置 1、 ... -
SpringMVC生成JSON(三)
2011-12-10 01:16 20595基于上一篇文章的代码基础上 一、准备工作 1、 下载依赖库 ... -
SpringMVC生成JSON(二)
2011-12-06 21:24 8233基于上一篇文章的代码基础上 开始Jackson之旅。 一、准 ... -
Spring MVC处理重定向的传参
2011-12-03 21:35 6517一、Spring MVC是如何处理重定向的传参? 现提供一种 ... -
Spring MVC3.0的RESTFul方式的访问
2011-12-03 20:59 1596上一篇以简单介绍了 ... -
SpringMVC之用注解控制器
2011-12-03 19:53 2462在传统的Spring MVC开发方法中,必须在Bean配置 ... -
SpringMVC例子代码小汇总
2011-11-20 11:18 1860一、结构 二、Jar版本及使用jar包 ... -
SpringMVC 拦截器实现分析
2011-11-20 00:10 5352一、Servlet Filter与Spring interce ... -
SpringMVC学习笔记(三) --- 映射处理器(续)
2011-10-07 21:46 1628<?xml version="1.0" ... -
SpringMVC学习笔记(二) --- 后端控制器之MultiActionController(一)
2011-10-07 21:07 2008创建处理多个请求的控制器 根据"每个请求一个 ... -
SpringMVC学习笔记(二) --- 后端控制器之CommandController、 FormController(三)
2011-10-07 16:09 2956另一种表单封装的参数的Controller是AbstractC ...
相关推荐
NULL 博文链接:https://exceptioneye.iteye.com/blog/1294465
这是结合博客的源码,链接是:http://blog.csdn.net/u012660464/article/details/53463708 。名为:使用Spring MVC生成Json数据,我们后台开发生成了Json数据后可以供前端进行异步调用。
一个基于java springMvc开发的代码生成器, 1为java工程师自动编写各种复杂的增删改查功能 2我提供各种友好的service接口 3 我能提供多种http json接口 .... 这个是这个工具的使用说明地址 ...
一个基于java springMvc开发的代码生成器, 1为java工程师自动编写各种复杂的增删改查功能 2我提供各种友好的service接口 3 我能提供多种http json接口 .... 这个是这个工具的使用说明地址 ...
springMVC3,hibernate3,Extjs json,spring注解,oracle,表自动生成
springmvc和Echarts结合,有两种实现图表的方式:1.直接把所需数据传到jsp页面中的js中;2.通过工具在类中生成类似js代码,转换成JSON字符串后传入到jsp页面中,具体介绍看博文
springmvc实现的简单用户管理系统,包括直接生成页面和返回json两种方式,配置明了,简单易懂,适合初学者
bootstrap+springMvc+spring图片上传下载,生成固定格式的json文件,以及将上传图片和json文件进行压缩打包操作
Swagger Maven插件 这个插件使您的Swagger注释项目可以在maven构建阶段生成... ) 支持Swagger Spec 1.2 ,支持JAX-RS和SpringMVC。 (懒惰地维护) 1.1.1支持Swagger Spec 1.1。 (不再维护) 从3.0.1升级到3.1.0+ 此
这个插件使您的带有夸张注解的项目能够在maven构建阶段生成夸张的规格和可定制的模板化静态文档。与swagger-core不同,swagger-maven插件并不主动地将规范服务于应用程序的其余部分;它生成规范作为构建工件,用于...
前台传给后台json串,后台生成excel并且能够下载。使用springmvc框架,兼容ie8
Spring MVC - REST Web 服务 对于相同的域对象,RestController 通过接受 application/json 或 application/xml 生成相应的响应。 设置标题 接受:application/json,或 接受:应用程序/xml 并将 GET 请求发送到
Swagger 是一款RESTFUL接口的、基于YAML、JSON语言的文档在线自动生成、代码自动生成的工具。
完整项目代码!可以学到spring mvc spring maven quartz jquery ajax json 等多种技术
3.mybaties 自动生成sql文件 entity实体 mapper映射类 4.redis 缓存 5.spring MVC 拦截器的使用 6.使用json返回到前端 7.psring MVC加载静态资源: 8.java实现execl导出 9.spring MVC直接执行sql语句:
这里不会介绍Swagger的工具具体如何使用,不会讲yml或者json格式描述文件的语法规范,也不会讲如何在SpringMVC或者Spring Boot中配置Springfox-swagger。这些都能从网上找到,而且配置起来都非常的简单。 这里想讲...
使用jdbc查询结果,使用递归生成前端所需要的树形json数据,用SpringMVC传送数据到前端,前端接收,引入相关js文件,在画面上接收后端传输的数据,使用js动态渲染到画面中。有疑问随时私信我即可。
并且基于Spring MVC提供了一个完整功能:实现了生成验证码图片,以及验证输入是否匹配的两个接口,接口为Rest风格,符合内容协商原则(同一资源,多种展现:xml,json,html)。 另外,演示了注解(Annotation)的用法,实现...
代码生成(单表、主附表、树表、列表和表单、redis高速缓存对接代码、图表统计、地图统计、vue.js)、dubbo、springCloud、SpringBoot、mybatis、spring、springmvc。 功能 用户管理:用户是系统操作者,该功能主要...