jackson工具类json转list、json转map、json转bean、bean转json
博客专区 > ValSong 的博客 > 博客详情
jackson工具类json转list、json转map、json转bean、bean转json
ValSong 发表于6个月前
jackson工具类json转list、json转map、json转bean、bean转json
  • 发表于 6个月前
  • 阅读 39
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: jackson简单的工具类
package cn.com.valsong.framework.util;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * Json工具类,基于Jackson实现
 * 
 * @author Val Song
 * @date Sep 4, 2017
 *
 */
public class JacksonUtils {

	/**
	 * 将对象转化成json
	 * 
	 * @param t
	 * @return
	 * @throws JsonProcessingException
	 */
	public static <T> String toJson(T t) throws JsonProcessingException {
		return OBJECT_MAPPER.get().writeValueAsString(t);
	}

	/**
	 * 将json转化成bean
	 * 
	 * @param json
	 * @param valueType
	 * @return
	 * @throws JsonParseException
	 * @throws JsonMappingException
	 * @throws IOException
	 */
	public static <T> T toEntity(String json, Class<T> valueType) throws IOException {
		return OBJECT_MAPPER.get().readValue(json, valueType);
	}

	/**
	 * 将json转化成List
	 * 
	 * @param json
	 * @param collectionClass
	 * @param elementClass
	 * @return
	 * @throws JsonParseException
	 * @throws JsonMappingException
	 * @throws IOException
	 */
	@SuppressWarnings("rawtypes")
	public static <T> List<T> toList(String json, Class<? extends List> collectionClass, Class<T> elementClass)
			throws IOException {
		JavaType javaType = OBJECT_MAPPER.get().getTypeFactory().constructCollectionType(collectionClass, elementClass);
		return OBJECT_MAPPER.get().readValue(json, javaType);
	}

	/**
	 * 将json转化成Map
	 * 
	 * @param json
	 * @param mapClass
	 * @param keyClass
	 * @param valueClass
	 * @return
	 * @throws JsonParseException
	 * @throws JsonMappingException
	 * @throws IOException
	 */
	@SuppressWarnings("rawtypes")
	public static <K, V> Map<K, V> toMap(String json, Class<? extends Map> mapClass, Class<K> keyClass,
			Class<V> valueClass) throws IOException {
		JavaType javaType = OBJECT_MAPPER.get().getTypeFactory().constructMapType(mapClass, keyClass, valueClass);
		return OBJECT_MAPPER.get().readValue(json, javaType);
	}

	// ################################################################################################################

	/**
	 * 禁止调用无参构造
	 * 
	 * @throws IllegalAccessException
	 */
	private JacksonUtils() throws AssertionError {
		throw new AssertionError("Can't create an instance!");
	}

	/**
	 * 使用ThreadLocal创建对象,防止出现线程安全问题
	 */
	private static final ThreadLocal<ObjectMapper> OBJECT_MAPPER = new ThreadLocal<ObjectMapper>() {
		@Override
		protected ObjectMapper initialValue() {
			ObjectMapper objectMapper = new ObjectMapper();
			objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // 忽略不存在的字段
			return objectMapper;
		}
	};

}

标签: jackson JSON
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 10
码字总数 6686
×
ValSong
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: