zhangyou1010
- 浏览: 285607 次
- 性别:
- 来自: 北京
-
文章分类
社区版块
- ( 0)
- ( 304)
- ( 88)
最新评论
-
stamina:
请问这个装在svn的客户端吗?我试了,发现命令“ava -ja ...
statsvn 统计svn代码量 -
在世界的中心呼喚愛:
不错,找到方法!!
利用jackson对object,map,list,数组,枚举,日期类等转化为json -
:
已经不错了
outofmemoryerror: unable to create new native thread -
liubey:
这个年代的项目编码还有用latin1的,是个坑啊 蛤蛤
ubuntu下maven构建工程中文乱码 -
wp0615032:
因为那个timestamp是一个乐观锁,每次更新时这个填要带上 ...
hibernate异常 org.hibernate.staleobjectstateexception: row was updated or deleted
利用jackson中的objectmapper对象,转为对象为json字符串,springside对jackson的简单封装 jsonbinder :
在其他类中定义jsonbinder对象:
以下是对象到json字符串以及json字符串到对象的转化:
在我的实际项目中,遇到一个有意思的问题,我把一个对象转为为json字符串时,调用binder.tojson(bean) ,这个方法,方法总是返回null,后面发现该bean中没有默认的构造函数,加上某人构造函数就ok了。
public class jsonbinder { private static logger logger = loggerfactory.getlogger(jsonbinder.class); private objectmapper mapper; public jsonbinder(inclusion inclusion) { mapper = new objectmapper(); //设置输出包含的属性 mapper.getserializationconfig().setserializationinclusion(inclusion); //设置输入时忽略json字符串中存在而java对象实际没有的属性 mapper.getdeserializationconfig().set( org.codehaus.jackson.map.deserializationconfig.feature.fail_on_unknown_properties, false); } /** * 创建输出全部属性到json字符串的binder. */ public static jsonbinder buildnormalbinder() { return new jsonbinder(inclusion.always); } /** * 创建只输出非空属性到json字符串的binder. */ public static jsonbinder buildnonnullbinder() { return new jsonbinder(inclusion.non_null); } /** * 创建只输出初始值被改变的属性到json字符串的binder. */ public static jsonbinder buildnondefaultbinder() { return new jsonbinder(inclusion.non_default); } /** * 如果json字符串为null或"null"字符串,返回null. * 如果json字符串为"[]",返回空集合. * * 如需读取集合如list/map,且不是list这种简单类型时使用如下语句: * list beanlist = binder.getmapper().readvalue(liststring, new typereference >() {}); */ public
t fromjson(string jsonstring, class clazz) { if (stringutils.isempty(jsonstring)) { return null; } try { return mapper.readvalue(jsonstring, clazz); } catch (ioexception e) { logger.warn("parse json string error:" jsonstring, e); return null; } } /** * 如果对象为null,返回"null". * 如果集合为空集合,返回"[]". */ public string tojson(object object) { try { return mapper.writevalueasstring(object); } catch (ioexception e) { logger.warn("write to json string error:" object, e); return null; } } /** * 设置转换日期类型的format pattern,如果不设置默认打印timestamp毫秒数. */ public void setdateformat(string pattern) { if (stringutils.isnotblank(pattern)) { dateformat df = new simpledateformat(pattern); mapper.getserializationconfig().setdateformat(df); mapper.getdeserializationconfig().setdateformat(df); } } /** * 取出mapper做进一步的设置或使用其他序列化api. */ public objectmapper getmapper() { return mapper; } }
在其他类中定义jsonbinder对象:
private static jsonbinder binder = jsonbinder.buildnondefaultbinder();
以下是对象到json字符串以及json字符串到对象的转化:
/** * 序列化对象/集合到json字符串. */ @test public void tojson() throws exception { //bean testbean bean = new testbean("a"); string beanstring = binder.tojson(bean); system.out.println("bean:" beanstring); assertequals("{\"name\":\"a\"}", beanstring); //map mapmap = maps.newlinkedhashmap(); map.put("name", "a"); map.put("age", 2); string mapstring = binder.tojson(map); system.out.println("map:" mapstring); assertequals("{\"name\":\"a\",\"age\":2}", mapstring); //list list stringlist = lists.newarraylist("a", "b", "c"); string liststring = binder.tojson(stringlist); system.out.println("string list:" liststring); assertequals("[\"a\",\"b\",\"c\"]", liststring); //list list beanlist = lists.newarraylist(new testbean("a"), new testbean("b")); string beanliststring = binder.tojson(beanlist); system.out.println("bean list:" beanliststring); assertequals("[{\"name\":\"a\"},{\"name\":\"b\"}]", beanliststring); //bean[] testbean[] beanarray = new testbean[] { new testbean("a"), new testbean("b") }; string beanarraystring = binder.tojson(beanarray); system.out.println("array list:" beanarraystring); assertequals("[{\"name\":\"a\"},{\"name\":\"b\"}]", beanarraystring); } /** * 从json字符串反序列化对象/集合. */ @test @suppresswarnings("unchecked") public void fromjson() throws exception { //bean string beanstring = "{\"name\":\"a\"}"; testbean bean = binder.fromjson(beanstring, testbean.class); system.out.println("bean:" bean); //map string mapstring = "{\"name\":\"a\",\"age\":2}"; map map = binder.fromjson(mapstring, hashmap.class); system.out.println("map:"); for (entry entry : map.entryset()) { system.out.println(entry.getkey() " " entry.getvalue()); } //list string liststring = "[\"a\",\"b\",\"c\"]"; list stringlist = binder.getmapper().readvalue(liststring, list.class); system.out.println("string list:"); for (string element : stringlist) { system.out.println(element); } //list string beanliststring = "[{\"name\":\"a\"},{\"name\":\"b\"}]"; list beanlist = binder.getmapper().readvalue(beanliststring, new typereference >() { }); system.out.println("bean list:"); for (testbean element : beanlist) { system.out.println(element); } }
在我的实际项目中,遇到一个有意思的问题,我把一个对象转为为json字符串时,调用binder.tojson(bean) ,这个方法,方法总是返回null,后面发现该bean中没有默认的构造函数,加上某人构造函数就ok了。
分享到:
|
评论
3 楼
在世界的中心呼喚愛
2014-05-24
不错,找到方法!!
2 楼
2012-11-20
new typereference<>()为什么不能用了呢,是org.codehaus.jackson.type下的类吧
1 楼
osacar
2012-03-25
真是我在找的啊!谢谢了
发表评论
-
outofmemoryerror: unable to create new native thread
2013-11-20 15:49 2627当看到这个错误时,第一感觉是创建的线程太多了、 ... -
graphicsmagick和im4java按比例压缩图片
2013-04-22 19:26 79431.先安装libpng-1.6.2rc02.tar.gz( ... -
服务器上某应用cpu一直100%问题记录
2013-04-18 21:35 4526jstack 31066 |grep 'nid=79 ... -
jvisualvm远程监控tomcat
2013-11-20 14:02 982在tomcat的catalina.sh中的java_opt ...
相关推荐
jackson 对象json字符串数组集合互转 各jar包 希望能用到。
三种方法将object-list-map-array 转成json 数据 并抽取了工具类,可以很方便的设置包含哪些字段,去掉哪些字段; jsonarray/jsonobject fastjson jackson 这三个框架
jacksonutil.obj2json(方法)的使用,等,不了解的可以留言
null 博文链接:https://bugyun.iteye.com/blog/2278997
下面小编就为大家带来一篇jackson将json string转为object,org.json读取json数组的实例,具有很好的参考价值,希望对大家有所帮助
jackson和json-lib两种方式实现map和json互转,别写出两者实现的区别,并上传了两者的包
然而通过json实现数据交互成为我们开发中的一部分,进而jackson为我们的json转化提供了很好的机制。下面我将利用实例总结如何使用jackson. 一、准备 如果你需要使用jackson,你必须得导入相应的架包,有如下三个包 ...
null 博文链接:https://bugyun.iteye.com/blog/2279033
jackson的jar包,用于转换map与list到json,直接导入即可
将json转换为map之后,如果数值类型太多会在转换之后出现科学计数法的问题,经研究jackson源码、网上百度资料得知可以通过设置一些参数解决该问题
jacksondemo.zip,jacksondemo,.project,src,com,bijian,study,deptbean.java,userbean.java,jacksonutil.java,jacksondemo.java,lib,jackson-core-2.4.3.jar,jackson-annotations-2.4.0.jar,jackson-databind-2.4.3....
jackson json jackson json jackson jsonjackson jsonjackson jsonjackson jsonjackson jsonjackson jsonjackson json
json 所需要的jackson-annotations-2.4.0.jar,jackson-core-2.4.2.jar, jackson-databind-2.4.2.jar,jackson-mapper-asl-1.9.11.jar
主要介绍了jackson优雅序列化java枚举类过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
json格式与java类对象相互转换。json格式转换成java类对象,list,map。类对象转换成json。
jackson框架解析json,主要讲解了怎样解析bean,list,map,bean>,list<map,bean>>类型的json
jackson 对象转json,json转对象,json转集合,json转map,jackson忽略字段,等等
1、jackson使用java类中的getxxx()方法定位生成的json对象的属性xxx和值(返回值),而不是字段; 2、可以通过在java类getxxx()方法前添加注释@jsonignore来忽略该getxxx()方法生成的属性xxx; 3、常用的...
json的全称是javascript object notation,是一种轻量级的数据交换格式。 json与 xml具有相同的特性,例如易于人编写和阅读,易于机器生成和解析。但是 json比xml数据传输的有效性要高出很多。 json完全独立与编程...