文档章节

使用jacksonjava对象转换成标准的json格式,便于与easyui...

岁月无痕
 岁月无痕
发布于 2013/04/19 10:32
字数 810
阅读 325
收藏 1

    我在一篇 《Easyui的datagrid结合hibernate实现数据分页 》中使用了JSONParser的自己编写的工具类,现在分享一下,其实这个工具很简单。

   大多数情况下,我后台都是把结果以List的形式返回给前台,但list的形式却不能满足AJAX处理json的格式,为了方便起见,我就简单了写了一个JSONParser类。

       一、首先得准备三个jar包,下载网址是http://jackson.codehaus.org/,我用的是2.0.版本,

这三个下载的时候会有点小麻烦,不过对英文还可以的人来说就是小case了。。

二、将下载的三个jar(jackson-core-xxx.jar,jackson-databind-xxx.jar,jackson-annotation-xxx.jar)导入到web应用的lib下,annotation的jar是用来使用注解的,不过我这个工具类功能不是很全,我就没必要用这个包了,但是还是要引入的,不引入会报错。

三、贴上代码,代码里的注释解释了用法,本文不是jackson的教学文章,所以不会很深入的讲解jackson的使用,只是简单的解释了下部分方法。

 

import java.io.IOException;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.fasterxml.jackson.databind.ObjectMapper;

public class JSONParser {
	//定义一个ObjecMapper ,这些写法都是从官方的文档上看的,详情可以去查询官方文档。	
	final static ObjectMapper om = new ObjectMapper();
	
	//自定义一个方法,将java的object写成json格式,然后用response返回前台页面。		
        public static void writeJson(Object obj) {
		
		//这里,我用的是struts2的访问request,response,session的工具ServletActionContext类来得到的response。
		HttpServletResponse response = ServletActionContext.getResponse();
		
		//中文字符处理
		response.setCharacterEncoding("UTF-8");
		try {
	/*ObjectMapper有多个个writeValue方法,这里我用的是这一个,需要一个输出流和一个对象做参数。
	public void writeValue(OutputStream out, Object value)throwsIOException,JsonGenerationException,JsonMappingException
	官方文档:Method that can be used to serialize any Java value as JSON output, using Writer provided. 
	 这个方法可以用一个提供的writer将任何java 值序列化成JSON 输出。
	Note: method does not close the underlying stream explicitly here; 
	however, JsonFactory this mapper uses may choose to close 
	the stream depending on its settings (by default, 
	it will try to close it when JsonGenerator we construct is closed). 
这个方法在这里不能明确的关闭底层的流,但是这个mapper使用的JsonFactory可以选择根据它的的设置来关闭流
默认是当我们创建的JsonGenerator关闭了它才关闭流。  */

	om.writeValue(response.getWriter(), obj);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


四、这个类完成了,我并没有是它的JsonGenerator来操作java,具体的使用方法请移步官方指导https://github.com/FasterXML/jackson-databind

     在其他的Action就可以使用这个工具了。

public String getUsers() {
		List<User> users = new ArrayList<User>();
		User u =new User();
		//BeanUtils.copyProperties(this, u);使用spring的BeanUtils工具,复制属性到u里面。
		u.setUsername(username);
		u.setDate(date);
		users = (List<User>) ud.getUsers(page, rows, u);
		Map<String, Object> m = new HashMap<String, Object>();
		m.put("total", ud.getTotal(page, rows, u));
		m.put("rows", users);
		//jackson工具
		JSONParser.writeJson(m);
		return "success";
	}


至此,这个JSONParser工具的来龙去脉就理清了,呵呵,其实jackson还有很多方法,能做的事远远不止这些,俺这只是冰山一角罢了,不过够俺使用就行了。。。

 

PS:我在CSDN的博客一会同步更新噢,欢迎探讨斧正。博客地址:http://my.csdn.net/Sgl731524380

© 著作权归作者所有

共有 人打赏支持
岁月无痕

岁月无痕

粉丝 9
博文 12
码字总数 10402
作品 0
杨浦
程序员
私信 提问
Easyui的datagrid结合hibernate实现数据分页

最近在学习easyui的使用,在学到datagrid的时候遇到了一些问题,终于抽点时间整理了一下,分享出来,请各位前辈高手多多指教! 1、先来看看效果,二话不说,上图直观! 2、easyui的datagrid的...

岁月无痕
2013/04/17
0
3
关于easyui datagrid分页的json格式

在网上找了很多资料,始终无法知晓easyui如果分页的话,需要传哪些值,并且json的组成格式是什么样的。 看了一篇质量比较好的博文,http://blog.sina.com.cn/s/blog8263c3c701014m10.html,得...

supperman
2012/08/26
0
4
Easyui的datagrid结合hibernate实现数据分页

Easyui的datagrid结合hibernate实现数据分页 最近在学习easyui的使用,在学到datagrid的时候遇到了一些问题,终于抽点时间整理了一下,分享出来,请各位前辈高手多多指教! 1、先来看看效果,...

岁月无痕
2015/06/01
0
0
EasyUI的功能树之异步树

最近几个项目都用到了EasyUI这个Jquery框架,目前感觉起来还是很好使的,展示效果很好,帮助文档什么的资料很多,而且互联网上Easy粉很多,大多数拥护和喜爱EasyUI的粉丝们都愿意在网络平台互...

易水寒丶开源
2015/11/17
0
1
jquery easyui 学习笔记

datagrid Q:批量删除的时候遇到已经选中多个项了但只删除了一条数据? A:查看是否已经指定了idField并确认idField没有错误 Q:数据加载慢? A:首先排除获取数据消耗的时间,然后为每个col...

AALMIX
2013/01/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Elasticsearch通关教程(五):如何通过SQL查询Elasticsearch

  这篇博文本来是想放在全系列的大概第五、六篇的时候再讲的,毕竟查询是在索引创建、索引文档数据生成和一些基本概念介绍完之后才需要的。当前面的一些知识概念全都讲解完之后再讲解查询是...

SEOwhywhy
3分钟前
0
0
以太坊PHP离线交易开发包

EthTool开发包适用于希望采用裸交易的PHP以太坊应用开发,主要包含以下特性: 支持裸交易部署/调用合约 内置etherscan和infura支持 keystore生成与读取,兼容geth/parity 采用裸交易的一个好...

笔阁
30分钟前
1
0
SRE的含义及与 DevOps 如何关联?

虽然站点可靠性工程师(site reliability engineer SRE)角色在近几年变得流行起来,但是很多人 —— 甚至是软件行业里的 —— 还不知道 SRE 是什么或者 SRE 都干些什么。为了搞清楚这些问题...

linuxCool
31分钟前
1
0
月入3万之一个程序员的转行坎坷历程

陈年往事 “我月入3万,怎么会少少了你一个鸡蛋啊?” 这是2017年9月左右的一个新闻,一位煎饼摊大妈因和顾客争执时脱口而出这样一句话而走红。当时还上了各大新闻的头条。 互联网兴起今天,...

苏南-首席填坑官
53分钟前
3
1
OSChina 周一乱弹 —— 眼看着这颗陨石砸了下来

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享Nachtblut的单曲《Antik》 《Antik》- Nachtblut 手机党少年们想听歌,请使劲儿戳(这里) @mr_chip :上海的初雪之后有点冷 ...

小小编辑
今天
528
9

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部