JackJson的一些方法
package cn.edu.hbcf.common.jackjson; import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Set; import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ser.FilterProvider;
import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
import org.codehaus.jackson.type.JavaType;
import org.codehaus.jackson.type.TypeReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; /**
* jackjson的一些转换方法
*
*/
public class JackJson {
private static final Logger logger = LoggerFactory.getLogger(JackJson.class);
/** 格式化时间的string */
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; /**
* jackjson把json字符串转换为Java对象的实现方法
*
* <pre>
* return JackJson.fromJsonToObject(this.answersJson, new TypeReference<List<StanzaAnswer>>() {
* });
* </pre>
*
* @param <T>
* 转换为的java对象
* @param json
* json字符串
* @param typeReference
* jackjson自定义的类型
* @return 返回Java对象
*/
public static <T> T fromJsonToObject(String json, TypeReference<T> typeReference) {
ObjectMapper mapper = new ObjectMapper();
try {
return (T)mapper.readValue(json, typeReference);
} catch (JsonParseException e) {
logger.error("JsonParseException: ", e);
} catch (JsonMappingException e) {
logger.error("JsonMappingException: ", e);
} catch (IOException e) {
logger.error("IOException: ", e);
}
return null;
} /**
* json转换为java对象
*
* <pre>
* return JackJson.fromJsonToObject(this.answersJson, JackJson.class);
* </pre>
*
* @param <T>
* 要转换的对象
* @param json
* 字符串
* @param valueType
* 对象的class
* @return 返回对象
*/
public static <T> T fromJsonToObject(String json, Class<T> valueType) {
ObjectMapper mapper = new ObjectMapper();
try {
return (T)mapper.readValue(json, valueType);
} catch (JsonParseException e) {
logger.error("JsonParseException: ", e);
} catch (JsonMappingException e) {
logger.error("JsonMappingException: ", e);
} catch (IOException e) {
logger.error("IOException: ", e);
}
return null;
} /**
* java对象转换为json字符串
*
* @param object
* Java对象
* @return 返回字符串
*/
public static String fromObjectToJson(Object object) {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writeValueAsString(object);
} catch (JsonGenerationException e) {
logger.error("JsonGenerationException: ", e);
} catch (JsonMappingException e) {
logger.error("JsonMappingException: ", e);
} catch (IOException e) {
logger.error("IOException: ", e);
}
return null;
} /**
* java对象转换为json字符串
*
* @param object
* 要转换的对象
* @param filterName
* 过滤器的名称
* @param properties
* 要过滤哪些字段
* @return
*/
@SuppressWarnings("deprecation")
public static String fromObjectToJson(Object object, String filterName, Set<String> properties) {
ObjectMapper mapper = new ObjectMapper();
FilterProvider filters = new SimpleFilterProvider().addFilter(filterName, SimpleBeanPropertyFilter.serializeAllExcept(properties));
try {
return mapper.filteredWriter(filters).writeValueAsString(object);
} catch (JsonGenerationException e) {
logger.error("JsonGenerationException: ", e);
} catch (JsonMappingException e) {
logger.error("JsonMappingException: ", e);
} catch (IOException e) {
logger.error("IOException: ", e);
}
return null;
} /**
* java对象转换为json字符串
*
* @param object
* 要转换的对象
* @param filterName
* 过滤器的名称
* @param properties
* 要过滤的字段名称
* @return
*/
@SuppressWarnings("deprecation")
public static String fromObjectToJson(Object object, String filterName, String property) {
ObjectMapper mapper = new ObjectMapper();
FilterProvider filters = new SimpleFilterProvider().addFilter(filterName, SimpleBeanPropertyFilter.serializeAllExcept(property));
try {
return mapper.filteredWriter(filters).writeValueAsString(object);
} catch (JsonGenerationException e) {
logger.error("JsonGenerationException: ", e);
} catch (JsonMappingException e) {
logger.error("JsonMappingException: ", e);
} catch (IOException e) {
logger.error("IOException: ", e);
}
return null;
} /**
* java对象(包含日期字段或属性)转换为json字符串
*
* @param object
* Java对象
* @return 返回字符串
*/
public static String fromObjectHasDateToJson(Object object) {
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().withDateFormat(new SimpleDateFormat(DATE_TIME_FORMAT));
try {
return mapper.writeValueAsString(object);
} catch (JsonGenerationException e) {
logger.error("JsonGenerationException: ", e);
} catch (JsonMappingException e) {
logger.error("JsonMappingException: ", e);
} catch (IOException e) {
logger.error("IOException: ", e);
}
return null;
} /**
* java对象(包含日期字段或属性)转换为json字符串
*
* @param object
* Java对象
* @param dateTimeFormatString
* 自定义的日期/时间格式。该属性的值遵循java标准的date/time格式规范。如:yyyy-MM-dd
* @return 返回字符串
*/
public static String fromObjectHasDateToJson(Object object, String dateTimeFormatString) {
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().withDateFormat(new SimpleDateFormat(dateTimeFormatString));
try {
return mapper.writeValueAsString(object);
} catch (JsonGenerationException e) {
logger.error("JsonGenerationException: ", e);
} catch (JsonMappingException e) {
logger.error("JsonMappingException: ", e);
} catch (IOException e) {
logger.error("IOException: ", e);
}
return null;
}
public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
ObjectMapper mapper = new ObjectMapper();
return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}
}
JackJson的一些方法的更多相关文章
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- JSON以及Java转换JSON的方法(前后端常用处理方法)
)); map.put("arr", new String[] { "a", "b" }); map.put("func" ...
- Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson
Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等 本人fastJson用了两年,也是从去年才开始接触Gson,希望下面的总结会对博友有用,至于Gso ...
- 分享知识-快乐自己:spring_Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson
心路历程: 在Controller中return 对象的时候,对象中的属性值中文部分在浏览器中 显示为问号?? 然后结果是这样的:?? 尝试排查原因: 中文乱码常有以下三种: 1.request.re ...
- JSON以及Java转换JSON的方法(前后端经常使用处理方法)
本文主要讲述例如以下几个内容: 1.JSON定义以及JSON的特性 2.怎样在JavaScript中解释JSON格式数据 3.怎样在Java代码中使用JSON(讲对象转换成JSON对象以及解释JSON ...
- springboot2.0入门(三)----定义编程风格+jackjson使用+postMan测试
一.RESTFul风格API 1.优点: )看Url就知道要什么资源 )看http method就知道针对资源干什么 )看http status code就知道结果如何 HTTP方法体现对资源的操作: ...
- JPA 一对多双向映射 结果对象相互迭代 造成堆栈溢出问题方法
问题: JPA 在双向映射时,会相互包含对方的实例,相互引用,造成递归迭代,堆栈溢出(java.lang.StackOverflowError). 分析: 在后端向前端传递的时候会将数据序列化,转为j ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- 【.net 深呼吸】细说CodeDom(6):方法参数
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
随机推荐
- Win32 API UART编程
下面是一个使用Win32 API进行UART编程的简单示例. #include <windows.h> #include <stdio.h> int WINAPI WinMai ...
- python wheel 包命名规则和 abi 兼容
wheel 包的命名规定 wheel 包的命名格式为 {distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform ...
- g++动态库静态库混合链接
今天编译一个程序时报错: g++ -static -o echo.fcgi echo_adaptor.o echo.o -L/usr/local/lib/ -lfastcgipp -L/usr/lib ...
- [Android Pro] Android中全局Application的onCreate多次调用问题
一般来说Application的onCreate方法只会执行一次, 如果应用中采用多进程方式,oncreate方法会执行多次,根据不同的进程名字进行不同的初始化, 就是在application中多添加 ...
- 云计算之路-阿里云上-新发现:又一种与虚拟内存有关的CPU波动情况
在云上真是无奇不有,昨天偶然间发现在IIS的应用程序池回收设置中,仅仅设置了一下基于虚拟内存限制的回收,就引发了CPU有规律的波动.在这篇博文中,我们将向大家汇报一下云计算之路上的这个小发现. 在之前 ...
- 腾讯技术分享:Android版手机QQ的缓存监控与优化实践
本文内容整理自公众号腾讯Bugly,感谢原作者的分享. 1.问题背景 对于Android应用来说,内存向来是比较重要的性能指标.内存占用过高,会影响应用的流畅度,甚至引发OOM,非常影响用户体验.因此 ...
- 学习EF之CodeFirst一
最近将花点时间学习EF相关知识,通过文章来进行一个完整的学习,Code First是由先有代码后生成数据库:将通过一实例来进行学习:我们简单分为三层,其中DataLibrary为EF上下文处理层,Mo ...
- stylus
stylus介绍 是个什么鬼?对于开发来说,CSS的弱点在于静态化.我们需要一个真正能提高开发效率的工具, LESS , SASS 都在这方面做了一些贡献. Stylus 是一个CSS的预处理框架,2 ...
- url 传值
js获取url参数值: index.htm?参数1=数值1&参数2=数值2&参数3=数据3&参数4=数值4&...... 静态html文件js读取url参数 根据获取h ...
- GUID转换成16位字符串或19位唯一字符串
整理几个经常使用GUID转换成16位字符串或19位唯一字符串方法: /// <summary> /// 依据GUID获取16位的唯一字符串 /// Author : 付义方 /// < ...