zoukankan      html  css  js  c++  java
  • JsonUtil自定义


    import java.io.IOException;
    import java.io.StringWriter;
    import java.io.Writer;
    import java.lang.reflect.Type;
    import java.util.List;

    import org.codehaus.jackson.JsonParseException;
    import org.codehaus.jackson.JsonParser;
    import org.codehaus.jackson.map.JsonMappingException;
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.type.JavaType;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;

    /**
     * json数据互转工具类。使用jackson API。
     */
    public class JsonUtil {
        private static final Logger log = LoggerFactory.getLogger(JsonUtil.class);
        private static ObjectMapper jacksonMapper = new ObjectMapper();
        /**
         *
         * @Description 把object转换成JSON格式的字符串
         * @param obj
         * @return
         */
        public static String toJson(Object obj) {
            Writer writer = new StringWriter();
            String result = "";
            try {
                ObjectMapper om = new ObjectMapper();
                om.writeValue(writer, obj);
                result = writer.toString();
                if (log.isDebugEnabled()) {
                    System.out.println(result);
                }
            } catch (Exception e) {
                if (log.isDebugEnabled()) {
                    log.debug(e.getMessage(), e);
                }
            } finally {
                if(writer != null){
                    try {
                        writer.close();
                        writer = null;
                    } catch (IOException e) {
                        if (log.isDebugEnabled()) {
                            log.debug(e.getMessage(), e);
                        }
                    }
                }
            }

            return result;
        }

        /**
         * 把JSON格式的字符串转换成对应的对象实例
         * @param json
         * @param clas
         * @return
         */
        public static <T> T toObject(String json, Class<T> clas){
            T obj = null;
            try {
                ObjectMapper om = new ObjectMapper();
                om.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
                om.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
                obj = om.readValue(json, clas);
            } catch (JsonParseException e) {
                try{
                    //针对非JSON规范时使用的JSON串转换
                    GsonBuilder gsonBuilder = new GsonBuilder();
                    gsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss");
                    //注册DateTime转换器
                    Gson gson = gsonBuilder.create();
                    return gson.fromJson(json, clas);
                }catch (Exception e1){
                    log.error(e.getMessage(), e1);
                }
    //            log.error(e.getMessage(), e);
            } catch (JsonMappingException e) {
                log.error(e.getMessage(), e);
            } catch (IOException e) {
                log.error(e.getMessage(), e);
            }

            return obj;
        }

        /**
         * @Title: toObject
         * @Description: 把JSON格式的字符串转换成对应的类型
         * @Created: 2017年4月19日 下午5:38:18
         * @param json
         * @param type
         * @return
         */
        @SuppressWarnings("unchecked")
        public static final <T> T toObject(String json, Type type) {
            GsonBuilder gsonBuilder = new GsonBuilder();
            Gson gson = gsonBuilder.create();
            return (T)gson.fromJson(json, type);
        }

        /**
         * 将json转换成List方式
         * @param json
         * @param valueType
         * @param <T>
         * @return
         * @throws Exception
         */
        @SuppressWarnings("unchecked")
        public static final <T> T jsonToList(String json, Class<?>... valueType) {
            JavaType javaType= jacksonMapper.getTypeFactory().constructParametricType(List.class,valueType);
            try {
                return (T)jacksonMapper.readValue(json, javaType);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

    }

  • 相关阅读:
    精简的网站reset 和 css通用样式库
    bootstrap使用心得及css模块化的初步尝试
    如何更高效地定制你的bootstrap
    OOCSS的概念和思路
    圣杯布局和双飞翼布局的作用和区别
    espcms简约版的表单,提示页,搜索列表页
    Sublime快捷键
    JavaScript——理解闭包及作用
    JavaScript——基本的瀑布流布局及ajax动态新增数据
    JavaScript——之对象参数的引用传递
  • 原文地址:https://www.cnblogs.com/ORC-NoEnd/p/7089615.html
Copyright © 2011-2022 走看看