bean和json相互转换工具类(工具ObjectMapper)

package util;


import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

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

/**
 * Created by shangyl on 15/4/21.
 * json处理类
 */
@SuppressWarnings({"unchecked"})
public class JacksonUtil {
    private static ObjectMapper objectMapper;

    static {
        objectMapper = generateMapper(JsonInclude.Include.NON_EMPTY);
    }

    private JacksonUtil() {
    }

    /**
     * 将json通过类型转换成对象
     */
    public static <T> T fromJson(String json, Class<T> clazz)
            throws IOException {
        return clazz.equals(String.class) ? (T) json : objectMapper.readValue(json,
                clazz);
    }

    /**
     * 将json通过类型转换成对象
     */

    public static <T> T fromJson(String json, TypeReference<?> typeReference)
            throws IOException {
        return (T) (typeReference.getType().equals(String.class) ? json
                : objectMapper.readValue(json, typeReference));
    }

    /**
     * 将对象转换成json
     */
    public static <T> String toJson(T src) throws IOException {
        return src instanceof String ? (String) src : objectMapper
                .writeValueAsString(src);
    }

    /**
     * 将对象转换成json, 可以设置输出属性
     */
    public static <T> String toJson(T src, JsonInclude.Include include)
            throws IOException {
        if (src instanceof String) {
            return (String) src;
        } else {
            ObjectMapper customMapper = generateMapper(include);
            return customMapper.writeValueAsString(src);
        }
    }

    /**
     * 将对象转换成json, 传入配置对象
     */
    public static <T> String toJson(T src, ObjectMapper mapper)
            throws IOException {
        if (null != mapper) {
            if (src instanceof String) {
                return (String) src;
            } else {
                return mapper.writeValueAsString(src);
            }
        } else {
            return null;
        }
    }

    /**
     */
    public static ObjectMapper mapper() {
        return objectMapper;
    }

    /**
     * 通过Inclusion创建ObjectMapper对象
     */
    private static ObjectMapper generateMapper(JsonInclude.Include include) {

        ObjectMapper customMapper = new ObjectMapper();

        // 设置输出时包含属性的风格

        customMapper.setSerializationInclusion(include);

        // 设置输入时忽略在JSON字符串中存在但Java对象实际没有的属性
        // customMapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);

        // 禁止使用int代表Enum的order()來反序列化Enum,非常危險
        // customMapper.configure(Feature.FAIL_ON_NUMBERS_FOR_ENUMS, true);

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

        return customMapper;
    }
}


转载于:https://my.oschina.net/u/1987404/blog/611015

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值