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错误");
	// }
	// }

}
时间: 2024-08-27 05:37:57

JsonUtil对象与json互转的相关文章

java 使用json-lib 对象,String,json互转

所使用的包: commons-beanutils.jar commons-collections-3.1.jar commons-lang.jar commons-logging-1.1.3.jar ezmorph-1.0.jar json-lib-2.2.2-jdk15.jar 先看json和String的互转 User.java   user对象 package test; public class User { String id; String name; int age; //省略ge

java 对象与json互转

有时为了项目需求,会将对象数据转换成json数据,以下是个人根据项目需求实现的方法. 项目中需要将数据格式: [{ "node": "0", "index": null, "status": null, "preNode": null, "postNode": [{ "node": "xxx_4" }, { "node": &q

Jackson 对象与json数据互转工具类JacksonUtil

1,User对象 package com.st.json; import java.util.Date; /** * @Description: JSON序列化和反序列化使用的User类 * @author Mr.Li * @date 2018年4月21日 下午10:55:34 */ public class User { private Integer id; private String name; private Integer age; private Date birthday; pr

JSONUtil(JAVA对象/List与json互转,xml与json互转)

package com.chauvet.utils.json; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.InputStreamReader; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.J

Jackson实现Object对象与Json字符串的互转

在项目开发过程中,当客户端与服务器响应时,数据交互是必不可少的.然而通过Json实现数据交互成为我们开发中的一部分,进而Jackson为我们的Json转化提供了很好的机制.下面我将利用实例总结如何使用jackson. 一.准备 如果你需要使用jackson,你必须得导入相应的架包,有如下三个包 jackson-annotations:jackson-core:jackson-databind Maven引入依赖代码 <span style="font-size:18px;">

Json对象与Json字符串互转(转载)

一.jQuery插件支持的转换方式 1 $.paseJSON(jsonstr);//将json字符串转换为json对象 二.浏览器支持的转换方式(Firefox,Chrome,Opera,Safair,IE9,IE8) 1 JSON.parse(jaonstr);//将json字符串转换为json对象 2 JSON.stringify(jsonobj);//将json对象转换为json字符串 注意:由于ie8(兼容模式),ie7和ie6没有JSON对象,需要使用JSON官方的方式,引入json.

Json对象与Json字符串互转(4种转换方式)

一.jQuery插件支持的转换方式 1 $.paseJSON(jsonstr);//将json字符串转换为json对象 二.浏览器支持的转换方式(Firefox,Chrome,Opera,Safair,IE9,IE8) 1 JSON.parse(jaonstr);//将json字符串转换为json对象 2 JSON.stringify(jsonobj);//将json对象转换为json字符串 注意:由于ie8(兼容模式),ie7和ie6没有JSON对象,需要使用JSON官方的方式,引入json.

java对象与json串互转

1:java对象与json串转换: java对象—json串: JSONObject JSONStr = JSONObject.fromObject(object); String str = JSONStr.toString(); json串—java对象: JSONObject jsonObject = JSONObject.fromObject( jsonString ); Object pojo = JSONObject.toBean(jsonObject,pojoCalss); 2:j

[JS]Javascript对象与JSON的互转

var obj = JSON.parse(json); //由JSON字符串转换为JSON对象 var json=JSON.stringify(obj); //将JSON对象转化为JSON字符 //此种需下载插件var json=obj.toJSONString(); //将JSON对象转化为JSON字符