基于jackson的工具类JacksonUtil


import com.fasterxml.jackson.annotation.JsonInclude;

import com.fasterxml.jackson.core.JsonGenerationException;

import com.fasterxml.jackson.core.JsonParseException;

import com.fasterxml.jackson.databind.DeserializationFeature;

import com.fasterxml.jackson.databind.JavaType;

import com.fasterxml.jackson.databind.JsonMappingException;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.databind.type.MapLikeType;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;


import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

 * Created by 737597978 on 2015/3/26.

 */

public final class JacksonUtil {

    private static Logger logger = LoggerFactory.getLogger(JacksonUtil.class);

    private static final ObjectMapper objectMapper;

    static {

        objectMapper = new ObjectMapper();

        //序列化时候统一日期格式

        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

        //设置null时候不序列化(只针对对象属性)

        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

        //反序列化时,属性不存在的兼容处理

        objectMapper.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

        //单引号处理

        objectMapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);

    }



    //将jsonStr转成相应的Map

    public static Map<String, Object> convertJson2Map(String jsonStr) {

        MapLikeType mapLikeType = JacksonUtil.objectMapper.getTypeFactory().constructMapLikeType(HashMap.class, String.class, Object.class);

        try {

            return objectMapper.readValue(jsonStr, mapLikeType);

        } catch (IOException e) {

            logger.error(e.getMessage(), e);

        }

        return null;

    }


    //将json转成相应的List

    public static List convertJson2List(String jsonStr) {

        JavaType javaType = JacksonUtil.objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, Object.class);

        try {

            return objectMapper.readValue(jsonStr, javaType);

        } catch (IOException e) {

            logger.error(e.getMessage(), e);

        }

        return null;

    }


    //反序列化json

    public static <T> T json2Object(String json, Class<T> clazz) {

        try {

            return objectMapper.readValue(json, clazz);

        } catch (JsonParseException e) {

            logger.error(e.getMessage(), e);

        } catch (JsonMappingException e) {

            logger.error(e.getMessage(), e);

        } catch (IOException e) {

            logger.error(e.getMessage(), e);

        }

        return null;

    }



    //序列化java对象

    public static <T> String object2Json(T entity) {

        try {

            return objectMapper.writeValueAsString(entity);

        } catch (JsonGenerationException e) {

            logger.error(e.getMessage(), e);

        } catch (JsonMappingException e) {

            logger.error(e.getMessage(), e);

        } catch (IOException e) {

            logger.error(e.getMessage(), e);

        }

        return null;

    }

}


转载于:https://my.oschina.net/u/1390040/blog/419245

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值