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 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
随机推荐
- iOS: 在Xcode7系列中给类名自动添加前缀
添加前缀原因: 我个人还是很喜欢 Class Prefix 的,因为: 1. 使用它几乎不增加什么成本, 2. 不使用它可能会造成安全隐患, 3. 它能够以直接的方式编码一些信息以供未来的回溯, 4. ...
- DSSM 深度学习解决 NLP 问题:语义相似度计算
https://cloud.tencent.com/developer/article/1005600
- pyPdf - 用Python方便的处理PDF文档
pyPdf库 ( http://pybrary.net/pyPdf/ ) ,操作起来相当直接易懂,把代码贴在这儿,做个记录. 1 from pyPdf import PdfFileWriter, P ...
- .NET MVC 验证码
.NET MVC 验证码
- ray tracing/shadow,reflection, caustic
看了一下午终于明白raytracing的算法了 不知道这次能记住多久 ssr我又完全不记得了 按照Henrik所说 理解raytracing的核心在于,它是从Eye到light反着走的 需要一个前序的 ...
- JavaWeb对RSA的使用
由于公司的网站页面的表单提交是明文的post,虽说是https的页面,但还是有点隐患(https会不会被黑?反正明文逼格是差了点你得承认啊),所以上头吩咐我弄个RSA加密,客户端JS加密,然后服务器J ...
- vue中watch的用法总结以及报错处理Error in callback for watcher "checkList"
首先确认 watch是一个对象,一定要当成对象来用. 对象就有键,有值. 键:就是你要监控的那个家伙,比如说$route,这个就是要监控路由的变化,或者是data中的某个变量. 值可以是函数:就是当你 ...
- ssh远程连接
SSH 是Secure Shell protocol 的简写,经由将联机的封包加密的技术,来进行资料的传递,安全. telnet: tcp:23 基于字符 任意客户端登录远程服务器 明文 无需验证 易 ...
- LINQ体验(6)——LINQ to SQL语句之Join和Order By
Join操作 适用场景:在我们表关系中有一对一关系,一对多关系.多对多关系等.对各个表之间的关系,就用这些实现对多个表的操作. 说明:在Join操作中.分别为Join(Join查询), SelectM ...
- cocos2d-x 3.1.1 学习笔记[15] Shader 著色器
首先须要两个文件 gray.fsh varying vec4 v_fragmentColor; varying vec2 v_texCoord; void main() { vec4 v_orColo ...