`
收藏列表
标题 标签 来源
JsonUtil jsonutil
package com.zgw.util;

import java.io.IOException;
import java.text.SimpleDateFormat;

import org.apache.commons.lang3.StringUtils;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
import org.codehaus.jackson.type.JavaType;
import org.codehaus.jackson.type.TypeReference;

public class JsonUtil {

	private static ObjectMapper objectMapper = new ObjectMapper();
	static {
		// 对象的所有字段全部列入
		objectMapper.setSerializationInclusion(Inclusion.ALWAYS);

		// 取消默认转换timestamps 形式
		objectMapper.configure(SerializationConfig.Feature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false);

		// 忽略空Bean转Json的错误
		objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);

		// 所有的日期格式都统一为以下的样式,即 yyyy-MM-dd HH:mm:ss
		objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

		// 忽略在 json字符串中存在,但是在 java对象中不存在对应属性的情况。防止错误
		objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
	}

	public static <T> String obj2String(T obj) {
		if (obj == null) {
			return null;
		}

		try {
			return obj instanceof String ? (String) obj : objectMapper.writeValueAsString(obj);
		} catch (Exception e) {
			System.err.println("Parse object to String error");
			return null;
		}
	}

	public static <T> String obj2StringPretty(T obj) {
		if (obj == null) {
			return null;
		}

		try {
			return obj instanceof String ? (String) obj
					: objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
		} catch (Exception e) {
			System.err.println("Parse object to String error");
			return null;
		}
	}

	public static <T> T string2Obj(String str, Class<T> clazz) {
		if (StringUtils.isEmpty(str) || clazz == null) {
			return null;
		}

		try {
			return clazz.equals(String.class) ? (T) str : objectMapper.readValue(str, clazz);
		} catch (Exception e) {
			System.err.println("Parse String to Object error");

			return null;
		}
	}

	public static <T> T string2Obj(String str, TypeReference<T> typeReference) {
		if (StringUtils.isEmpty(str) || typeReference == null) {
			return null;
		}

		try {
			return (T) (typeReference.getType().equals(String.class) ? str
					: objectMapper.readValue(str, typeReference));
		} catch (Exception e) {
			System.err.println("Parse String to Object error");

			return null;
		}

		// List<User> userListObj1 = JsonUtil.string2Obj(userListStr, new
		// TypeReference<List<User>>(){});
	}

	public static <T> T string2Obj(String str, Class<?> collectionClass, Class<?>... elementClasses) {
		JavaType javaType = objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);

		try {
			return objectMapper.readValue(str, javaType);
		} catch (Exception e) {
			System.err.println("Parse String to Object error");

			return null;
		}
	}

	// List<User> userListObj2 = JsonUtil.string2Obj(userListStr, List.class,
	// User.class);
}
Global site tag (gtag.js) - Google Analytics