zoukankan      html  css  js  c++  java
  • java常用工具类(二)—— JSON处理工具类

    package com.springboot.commons.utils;
    
    import com.springboot.commons.scan.JacksonObjectMapper;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    import java.io.IOException;
    import java.util.Iterator;
    
    /**
     * @author Lius
     * @date 2018/10/26 14:34
     * @description JSON 工具类
     */
    public class JsonUtils {
        private static final String JSONARRAY = "net.sf.json.JSONArray";
    
        public JsonUtils() {
        }
    
        private static ObjectMapper getInstance() {
            return JacksonHolder.INSTANCE;
        }
    
        private static class JacksonHolder {
            private static ObjectMapper INSTANCE = new JacksonObjectMapper();
        }
    
        /**
         * 将对象序列化成JSON对象
         *
         * @param object java对象
         * @author Lius
         * @date 2018/10/26 14:37
         */
        public static String toJson(Object object) {
            try {
                return getInstance().writeValueAsString(object);
            } catch (JsonProcessingException e) {
                throw new RuntimeException();
            }
        }
    
        /**
         * 将json反序列化成java对象
         *
         * @param jsonString 需要序列化的json字符串
         * @param valueType  序列化成的对象
         * @author Lius
         * @date 2018/10/26 14:42
         */
        public static <T> T parse(String jsonString, Class<T> valueType) {
            try {
                return getInstance().readValue(jsonString, valueType);
            } catch (IOException e) {
                throw new RuntimeException();
            }
        }
    
        /**
         * 判断所有json字段是否全为空
         *
         * @param jsonObj JSON 对象
         * @author Lius
         * @date 2018/10/26 14:51
         */
        public boolean isAllFieldNotNull(Object jsonObj) throws Exception {
            boolean flag = false;
            if (jsonObj == null) {
                return false;
            }
            String type = jsonObj.getClass().getName();
            // Object对象
            if (!JSONARRAY.equals(type)) {
                JSONObject jsonObject = JSONObject.fromObject(jsonObj);
                Iterator iterator = jsonObject.keys();
                while (iterator.hasNext()) {
                    String key = (String) iterator.next();
                    if (jsonObject.get(key) != null && !"".equals(jsonObject.get(key))) {
                        flag = true;
                    }
                }
                return flag;
            } else {
                JSONArray jsonArray = JSONArray.fromObject(jsonObj);
                for (Object object : jsonArray) {
                    JSONObject jsonObject = JSONObject.fromObject(object);
                    Iterator iterator = jsonObject.keys();
                    while (iterator.hasNext()) {
                        String key = (String) iterator.next();
                        if (jsonObject.get(key) != null && !"".equals(jsonObject.get(key))) {
                            flag = true;
                        }
                    }
                    return flag;
                }
            }
            return true;
        }
    /**
         * 把JSON字符串转换为Map形式
         * @author Lius
         * @date 2018/11/8 9:19
        */
        public static Map<String, Object> jSON2Map(String jsonStr) {
            Map<String, Object> map = new HashMap<String, Object>();
            JSONObject json = JSONObject.fromObject(jsonStr);
            for (Object k : json.keySet()) {
                Object v = json.get(k);
                if (v instanceof JSONArray) {
                    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
                    Iterator it = ((JSONArray) v).iterator();
                    while (it.hasNext()) {
                        Object json2 = it.next();
                        list.add(jSON2Map(json2.toString()));
                    }
                    map.put(k.toString(), list);
                } else {
                    map.put(k.toString(), v);
                }
            }
            return map;
        }
    
        public static void main(String[] args) {
            String json = "{"name":"zhangsan","age":20,"loginName":"loginName","password":"zhangsan@163.com"}";
    
        }
    
    }
    
    • JacksonObjectMapper 代码如下
    package com.springboot.commons.scan;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.springframework.stereotype.Component;
    
    import java.text.SimpleDateFormat;
    import java.util.Locale;
    import java.util.TimeZone;
    
    /**
     * 解决Jackson 差8小时的问题
     * @author Lius
     */
    @Component("jacksonObjectMapper")
    public class JacksonObjectMapper extends ObjectMapper {
    
        private static final long serialVersionUID = 4288193147502386170L;
    
        private static final Locale CHINA = Locale.CHINA;
        
        public JacksonObjectMapper() {
            this.setLocale(CHINA);
            this.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", CHINA));
            this.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        }
    
    }
    
    
  • 相关阅读:
    windows 下的 Apache SSL证书配置
    javascript xml字符串转为json对象
    php 服务端允许跨域访问
    前端自动化构建工具 gulp 学习笔记 一、
    mysql使用select语句导出表数据时,报error 1290解决方法
    批量操作系统服务的脚本(windows关闭服务脚本)
    Dism++备份还原系统
    Win10开启蓝屏信息记录及文件查看位置的方法
    MySql 8.0服务端安装后,用navicat12连接时报2059错误_解决
    软件测试之细节功能测试_注意点
  • 原文地址:https://www.cnblogs.com/LiuSandy/p/9932695.html
Copyright © 2011-2022 走看看