JSON 解析工具的封装(Java)

JSON 解析工具的封装(Java)

  一直想有一个属于自己的JSON工具,今天终于弄好了.....

   1.添加pom依赖包

  • <!--json解析-->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.7.4</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.7.4</version>
            </dependency>

  2.JSONUtils.java

  1. import com.fasterxml.jackson.annotation.JsonInclude;
    import com.fasterxml.jackson.core.type.TypeReference;
    import com.fasterxml.jackson.databind.DeserializationFeature;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializationFeature;
    
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.*;
    
    /**
     * Created by 杨永生 on 2017/4/26.
     */
    public class JSONUtils {
    
        private final static ObjectMapper objectMapper = new ObjectMapper();
    
        static {
            //去掉默认的时间戳格式
            objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
            //设置为中国上海时区
            objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
            objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
            //空值不序列化
            objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
            //反序列化时,属性不存在的兼容处理
            objectMapper.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
            //序列化时,日期的统一格式
            objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
    
            objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            //单引号处理
            objectMapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
        }
    
        private JSONUtils() {
    
        }
    
        public static ObjectMapper getInstance() {
    
            return objectMapper;
        }
    
    
        /**
         * javaBean,list,array convert to json string
         */
        public static String obj2json(Object obj){
            try {
                return objectMapper.writeValueAsString(obj);
            }catch (Exception e){
                e.printStackTrace();
            }
            return "";
        }
    
        public static <T> T obj2obj(Object obj, Class<T> clazz){
            try {
               String str=obj2json(obj);
                return json2pojo(str,clazz);
            }catch (Exception e){
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * json string convert to javaBean
         */
        public static <T> T json2pojo(String jsonStr, Class<T> clazz) {
            try {
                return objectMapper.readValue(jsonStr, clazz);
            }catch (Exception e){
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * json string convert to map
         */
        public static <T> Map<String, Object> json2map(String jsonStr)
                throws Exception {
            return objectMapper.readValue(jsonStr, Map.class);
        }
    
        public static <T> T fromJson(TypeReference<T> tr,byte[] content){
            T t=null;
            try {
                t = objectMapper.readValue(content,0, content.length, tr);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return t;
        }
    
        /**
         * json string convert to map with javaBean
         */
        public static <T> Map<String, T> json2map(String jsonStr, Class<T> clazz)
                throws Exception {
            Map<String, Map<String, Object>> map = objectMapper.readValue(jsonStr,
                    new TypeReference<Map<String, T>>() {
                    });
            Map<String, T> result = new HashMap<String, T>();
            for (Map.Entry<String, Map<String, Object>> entry : map.entrySet()) {
                result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));
            }
            return result;
        }
    
        /**
         * json array string convert to list with javaBean
         */
        public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz)
                throws Exception {
            List<Map<String, Object>> list = objectMapper.readValue(jsonArrayStr,
                    new TypeReference<List<T>>() {
                    });
            List<T> result = new ArrayList<T>();
            for (Map<String, Object> map : list) {
                result.add(map2pojo(map, clazz));
            }
            return result;
        }
    
        /**
         * map convert to javaBean
         */
        public static <T> T map2pojo(Map map, Class<T> clazz) {
            return objectMapper.convertValue(map, clazz);
        }
    }

    3.示例:

       Article article=JSONUtils.json2pojo(tempString, Article.class);

 

posted @ 2017-04-26 17:42  全栈九九六  阅读(987)  评论(0编辑  收藏  举报