JsonUtil对象与json互转
OrderDto orderDto = JsonUtil.json2Object(json,
new TypeRef<OrderDto>() {
});
package com.sf.module.bspcommon.util.json; import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.TimeZone; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.sf.module.bspcommon.util.JsonException; /**
* 描述:JsonUtil工具类
*
* <pre>
* HISTORY
* ****************************************************************************
* ID DATE PERSON REASON
* 1 2015年3月7日 sfit0250 Create
* ****************************************************************************
* </pre>
*
* @author sfit0250
* @since 1.0
*/
public class JsonUtil { private static Logger logger = LoggerFactory.getLogger(JsonUtil.class); private static final ObjectMapper objectMapper;
/** 格式化时间的string */
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
static {
objectMapper = new ObjectMapper();
// 去掉默认的时间戳格式
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
// 设置为中国北京时区
objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
// 空值不序列化
objectMapper.setSerializationInclusion(Include.NON_NULL);
// 反序列化时,属性不存在的兼容处理
objectMapper.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); // 序列化时,日期的统一格式
objectMapper.setDateFormat(new SimpleDateFormat(DATE_TIME_FORMAT)); objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// 单引号处理
objectMapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
} /**
* json 转换成 Object
*
* @param json
* @param clazz
* @return
*/
public static <T> T json2Object(String json, Class<T> clazz) {
try {
return objectMapper.readValue(json, clazz);
} catch (IOException e) {
logger.error("", e);
throw new RuntimeException("解析json错误");
}
} public static <T> T json2Object(String json, TypeRef<T> tr) {
try {
return (T)objectMapper.readValue(json, tr.getType());
} catch (IOException e) {
logger.error("", e);
throw new RuntimeException("解析json错误", e);
}
} /**
* obj 转换成json
*
* @param entity
* @return
*/
public static <T> String object2Json(T entity) {
try {
return objectMapper.writeValueAsString(entity);
} catch (IOException e) {
logger.error("", e);
throw new RuntimeException("转换json错误");
}
} /**
* obj对象 转换成树型JSON
*
* @param obj
* @return
*/
public static JsonNode object2TreeJson(Object obj) {
try {
return objectMapper.valueToTree(obj);
} catch (Exception e) {
logger.error("", e);
throw new RuntimeException("转换json错误");
}
} /**
* 解码json串成对象
*
* @param <T>
* @param json
* @param valueType
* @return T
*/
@SuppressWarnings("unchecked")
public static <T> T decode(String json, Class<?> valueType) {
try {
return (T) objectMapper.readValue(json, valueType);
} catch (Exception e) {
throw new JsonException(json, e);
}
}
// /**
// * 对象转换JSON 忽略指定属性
// * @param obj
// * @param pros 忽略属性名
// * @return
// */
// public static String object2JsonIgnoreProperties(Object obj, String...
// pros) {
// try {
// FilterProvider filters = new SimpleFilterProvider().addFilter(obj
// .getClass().getName(), SimpleBeanPropertyFilter
// .filterOutAllExcept(pros));
// objectMapper.setFilters(filters);
// objectMapper.setAnnotationIntrospector(new
// JacksonAnnotationIntrospector() {
// private static final long serialVersionUID = 1L;
//
// public Object findFilterId(AnnotatedClass ac) {
// return ac.getName();
// }
// });
// return objectMapper.writeValueAsString(obj);
// } catch (Exception e) {
// log.error(e);
// throw new RuntimeException("转换json错误");
// }
// } }
JsonUtil对象与json互转的更多相关文章
- java基础之泛型对象与json互转
1. 场景描述 把泛型对象转成字符串放到缓存中,获取后使用有点问题,记录下,有碰到的朋友,参考下. 2. 解决方案 2.1 操作类及说明 /** * @auther: 软件老王 */ public s ...
- 使用Json-lib将对象和Json互转
工程下载地址: https://files.cnblogs.com/files/xiandedanteng/jsonSample20200308.rar Depenency: <!-- 使用js ...
- java 对象与json互转
有时为了项目需求,会将对象数据转换成json数据,以下是个人根据项目需求实现的方法. 项目中需要将数据格式: [{ "node": "0", "ind ...
- java对象与json互转
package com.liveyc; import java.io.StringWriter; import org.junit.Test; import com.fasterxml.jackson ...
- fastjson 对象和json互转
list转json List<Openid> openids = od.getAll(session); String json = JSONObject.toJSONString(ope ...
- Jackson 对象与json数据互转工具类JacksonUtil
1,User对象 package com.st.json; import java.util.Date; /** * @Description: JSON序列化和反序列化使用的User类 * @aut ...
- JSONUtil(JAVA对象/List与json互转,xml与json互转)
package com.chauvet.utils.json; import java.io.BufferedReader; import java.io.File; import java.io.F ...
- Jackson实现Object对象与Json字符串的互转
在项目开发过程中,当客户端与服务器响应时,数据交互是必不可少的.然而通过Json实现数据交互成为我们开发中的一部分,进而Jackson为我们的Json转化提供了很好的机制.下面我将利用实例总结如何使用 ...
- fastjson对象,JSON,字符串,map之间的互转
1.对象与字符串之间的互转 将对象转换成为字符串 String str = JSON.toJSONString(infoDo); 字符串转换成为对象 InfoDo infoDo = JSON.pars ...
随机推荐
- Form表单中的三种查询方法
1.使用:parameter.G_query_find参数: IF (NAME_IN('PO_HEADERS.PO_HEADER_ID') IS NOT NULL) THEN :paramete ...
- 我的第一个Struts程序
1.程序结构 2.各种文件 LoginAction.java package com.tfj.action; public class LoginAction { private String use ...
- 【随笔】Linux & Shell & Minecraft
官方的服务器依然会报 异常.[搁置] 准备再搭一次minecraft server,从官方的开始,毕竟是最简单的,只要有运行权限就够了. # 2015年12月16日 20:30:50 在阿里云租的虚拟 ...
- -_-#【减少 DOM 元素】textarea, script 延迟渲染
淘宝详情页的 BigRender 优化与存放大块 HTML 内容的最佳方式 淘宝详情页的BigRender优化的最佳方式 <!DOCTYPE html> <html> < ...
- Android自定义组合控件
今天和大家分享下组合控件的使用.很多时候android自定义控件并不能满足需求,如何做呢?很多方法,可以自己绘制一个,可以通过继承基础控件来重写某些环节,当然也可以将控件组合成一个新控件,这也是最方便 ...
- 安装Intel CPU的Android模拟器
1. 用Android SDK Manager安装Extras/Intel x86 Emulator Accelarator(HAXM) 2. 用Android SDK Manager安装Androi ...
- (转载)四种常见的 POST 提交数据方式
(转载)http://www.imququ.com/post/four-ways-to-post-data-in-http.html HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS ...
- opencv保存选择图像中的区域(二)
/* * ===================================================================================== * * Filen ...
- nyoj重建二叉树(不真的建立)
感觉c++很陌生啊 题目很简单,给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!). 输入 输入有多组数据(少于100组),以文件结尾结束.每组数据仅一行,包括两个字符串,中间用 ...
- 【解决】Microsoft Visual Studio 2012 打开2008下编译的silverlight3项目
最近因为项目需要,老师要我搞一发流程设计器,毫无头绪呀妈蛋 .. 我考虑是用silverlight呢还是jquery .. 上网找了找 .. 有一个用silverlight3写的 貌似IDE用的是V ...