- 浏览: 299128 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
stamina:
请问这个装在svn的客户端吗?我试了,发现命令“ava -ja ...
statsvn 统计svn代码量 -
在世界的中心呼喚愛:
不错,找到方法!!
利用Jackson对Object,Map,List,数组,枚举,日期类等转化为json -
lg5414:
已经不错了
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<String>这种简单类型时使用如下语句: * List<MyBean> beanList = binder.getMapper().readValue(listString, new TypeReference<List<MyBean>>() {}); */ public <T> T fromJson(String jsonString, Class<T> 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 Map<String, Object> map = 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<String> List<String> stringList = Lists.newArrayList("A", "B", "C"); String listString = binder.toJson(stringList); System.out.println("String List:" + listString); assertEquals("[\"A\",\"B\",\"C\"]", listString); //List<Bean> List<TestBean> 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<String, Object> map = binder.fromJson(mapString, HashMap.class); System.out.println("Map:"); for (Entry<String, Object> entry : map.entrySet()) { System.out.println(entry.getKey() + " " + entry.getValue()); } //List<String> String listString = "[\"A\",\"B\",\"C\"]"; List<String> stringList = binder.getMapper().readValue(listString, List.class); System.out.println("String List:"); for (String element : stringList) { System.out.println(element); } //List<Bean> String beanListString = "[{\"name\":\"A\"},{\"name\":\"B\"}]"; List<TestBean> beanList = binder.getMapper().readValue(beanListString, new TypeReference<List<TestBean>>() { }); 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 楼
braverong
2012-11-20
new TypeReference<>()为什么不能用了呢,是org.codehaus.jackson.type下的类吧
1 楼
osacar
2012-03-25
真是我在找的啊!谢谢了
发表评论
-
test
2015-12-23 11:21 0test test test testtest te ... -
java.net.UnknownHostException
2013-11-22 16:22 0服务器上tomcat启动时,报如下错误: 15:2 ... -
OutOfMemoryError: unable to create new native thread
2013-11-20 15:49 2991当看到这个错误时,第一感觉是创建的线程太多了、 ... -
ibatis配置log4j输出sql
2013-06-04 11:53 0不输出httpclient请求头信息: log4j. ... -
命令行编译 运行java程序
2013-05-23 14:13 0lucene的demo代码,需要在命令行下运行,折腾了半会, ... -
GraphicsMagick和im4java按比例压缩图片
2013-04-22 19:26 82731.先安装libpng-1.6.2rc02.tar.gz( ... -
服务器上某应用cpu一直100%问题记录
2013-04-18 21:35 4949jstack 31066 |grep 'nid=79 ... -
jvisualvm远程监控tomcat
2013-11-20 14:02 1319在tomcat的catalina.sh中的JAVA_OPT ... -
计算byte表示的二进制数据中,1出现的次数
2011-11-29 12:55 1476无意中看到这个题目,开始想到的是把byte的二进制数据转为一个 ... -
eclipse下的gc.log记录
2011-07-06 08:06 1481eclipse下的gc.log记录: 6.784: [G ... -
设计模式 代理模式(静态代理)
2011-04-08 09:05 1194代理模式的作用:为其他对象提供代理以控制对这个对象的访问. ... -
alipay 电面记录
2011-04-06 21:10 14131. 网站压力测试 2.jvm 调优,jvm内存管理,垃圾收集 ... -
PermGen space 溢出 使用jstat查看 Permsize 占用情况 并设置 PermSize和MaxPermSize
2011-03-02 11:38 17695网站以前经常java.lang.OutOfMemoryErro ... -
Collection接口的remove和List接口的remove的差别
2011-02-25 21:00 1824刚看书上一段代码,觉得输出的结果有点奇怪,查看了jdk的api ... -
tomcat6 中get 和 post 表单提交时编码的差别
2011-01-13 22:30 4282相信搞java的朋友都 ... -
struts2 报错时不进入 指定的500页面的原因
2010-12-15 13:34 4970折腾好些天了,我们项目用的web框架是struts2,具体那 ... -
jquery请求 返回json格式数据
2010-07-26 15:03 1589这个问题应该是常识性问题,可我还是不是很明白。 在前台用jqu ... -
java ant maven windows下 环境变量
2010-07-13 10:37 1268要运行springside,安装ant,maven是必需的。 ... -
java 工程再次无法编译
2010-06-03 09:38 1218以前遇到这种工程无法编译的情况,无非删掉class文件,重启i ... -
java path classpath
2010-05-04 15:16 1258windows xp下配置JDK环境变量: 1.安装JDK, ...
相关推荐
jackson 对象json字符串数组集合互转 各jar包 希望能用到。
下面小编就为大家带来一篇Jackson将json string转为Object,org.json读取json数组的实例,具有很好的参考价值,希望对大家有所帮助
JackSonUtil.obj2json(方法)的使用,等,不了解的可以留言
将json转换为map之后,如果数值类型太多会在转换之后出现科学计数法的问题,经研究jackson源码、网上百度资料得知可以通过设置一些参数解决该问题
三种方法将Object-List-Map-Array 转成json 数据 并抽取了工具类,可以很方便的设置包含哪些字段,去掉哪些字段; JSONArray/JSONObject fastjson jackson 这三个框架
然而通过Json实现数据交互成为我们开发中的一部分,进而Jackson为我们的Json转化提供了很好的机制。下面我将利用实例总结如何使用jackson. 一、准备 如果你需要使用jackson,你必须得导入相应的架包,有如下三个包 ...
NULL 博文链接:https://bugyun.iteye.com/blog/2278997
jackson json jackson json jackson jsonjackson jsonjackson jsonjackson jsonjackson jsonjackson jsonjackson json
jackson的jar包,用于转换map与list到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
json格式与java类对象相互转换。json格式转换成java类对象,List,Map。类对象转换成json。
JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。 JSON与 XML具有相同的特性,例如易于人编写和阅读,易于机器生成和解析。但是 JSON比XML数据传输的有效性要高出很多。 JSON完全独立与编程...
json数据解析ObjectMapper类需要使用的jar包 org.codehaus.jackson.map.ObjectMapper jackson-mapper-asl-1.9.13.jar
NULL 博文链接:https://bijian1013.iteye.com/blog/2310135
json字符串实体bean或者List互转(gson和jackson,支持泛型),支持json的格式化,所需要的包在代码也有说明。还有少的可以告知我,谢谢
对 jackson json 进行了封装,可以实现 string->json 的互转,包括简单对象的互转和复杂对象的互转
赠送jar包:jackson-jaxrs-json-provider-2.7.8.jar; 赠送原API文档:jackson-jaxrs-json-provider-2.7.8-javadoc.jar; 赠送源代码:jackson-jaxrs-json-provider-2.7.8-sources.jar; 赠送Maven依赖信息文件:...
Jackson JSON 三个jar包,Jackson JSON是一个非常方便强大的JSON框架,使用其让我们的开发游刃有余。
jackson和json-lib两种方式实现map和json互转,别写出两者实现的区别,并上传了两者的包