zoukankan      html  css  js  c++  java
  • jackson-mapper使用工具类

    import com.google.common.collect.Lists;
    import org.codehaus.jackson.annotate.JsonMethod;
    import org.codehaus.jackson.map.DeserializationConfig;
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.map.SerializationConfig;
    import org.codehaus.jackson.map.type.TypeFactory;
    import org.codehaus.jackson.type.JavaType;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    public class JSONUtil {

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

    private static ObjectMapper mapper = new ObjectMapper();

    static {
    mapper.setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY);//所有的属性都可以访问到(从private 到public)
    mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);//缩紧的方式进行序列化输出
    mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);//反序列化时,属性如果没有set方法,不报错。

    /**
    * Object to JSON的转化
    *
    * @param obj
    * @return
    */
    public static String object2Json(Object obj) {
    try {
    return mapper.writeValueAsString(obj);
    } catch (IOException e) {
    logger.error("parse Object to String error", e);
    }

    return null;
    }

    /**
    * jsonArray转化成list
    */
    public static <T> List<T> jsonStr2List(String jsonStr, Class<?> clazz) {
    List<T> list = Lists.newArrayList();
    try {
    // 指定容器结构和类型(这里是ArrayList和clazz)
    TypeFactory t = TypeFactory.defaultInstance();
    list = mapper.readValue(jsonStr,
    t.constructCollectionType(ArrayList.class, clazz));
    } catch (IOException e) {
    logger.error("反序列化序列化报错", e);
    }
    return list;
    }

    public static <T> T readValue(String o, Class<T> clazz) {
    try {
    return mapper.readValue(o, clazz);
    } catch (IOException e) {
    logger.error("反序列化错误", e);
    }
    return null;
    }

    public static <T> T readJson(String jsonStr, Class<?> collectionClass,
    Class<?>... elementClasses) {
    ObjectMapper mapper = new ObjectMapper();

    JavaType javaType =
    mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);

    try {
    return mapper.readValue(jsonStr, javaType);
    } catch (IOException e) {
    e.printStackTrace();
    }
    return null;
    }

    public static ObjectMapper getMapper() {
    return mapper;
    }
    }

    参考资料:

    http://a52071453.iteye.com/blog/2175398

  • 相关阅读:
    C#基础:Lambda表达式
    ACF:让控制台程序变得更为简单
    改变应用程序配置文件的文件名
    终止正在执行的线程
    C#基础:值类型、引用类型与ref关键字
    C#基础:匿名方法
    C#基础:泛型委托
    C#基础:事件(一)
    常用软件注册机
    一场惊艳的狂欢
  • 原文地址:https://www.cnblogs.com/tom-plus/p/6163728.html
Copyright © 2011-2022 走看看