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\":\"[email protected]\"}";

    }

}
  • 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"));
    }

}

原文地址:https://www.cnblogs.com/LiuSandy/p/9932695.html

时间: 2024-10-11 00:53:24

java常用工具类(二)—— JSON处理工具类的相关文章

Java 常用API(二)

目录 Java 常用API(二) 1. Object类 2. Date类 概述 构造方法和成员方法 3. DateFormat类 概述 SimpleDateFormat类 练习 4. Calendar类 5. System类 6. StringBuilder类 String类的原理 StringBuilder类的原理 StringBuilder的构造方法 StringBuilder的常用方法 7. 包装类 概述 装箱与拆箱(以 int 类型为例) 自动装箱与自动拆箱 基本类型与字符串类型之间的相

5分钟让你学会用最高效的工具解析所有Json

如果你是一个Android开发工程师,学会解析Json字符串是你的必修课,本篇文章主要以实例的方式手把手教你怎么做,花五分钟时间阅读本篇文章你就可以学会解析所有的Json字符串啦. 准备: json字符串 fastjson HiJson格式化json工具 开始教程: fastjson: 常用工作中解析json的工具类有谷歌的GSON,jackson,fastjson,这里就不做一一比较了,博主告诉大家,fastjson就是最高效最好用的,选它就没错了.FastJson出自阿里工程师之手,是一个J

[Linux] jq:命令行JSON处理工具

jq命令帮助我们很方便地在终端查看和处理json文件 jq命令的帮助信息: [email protected]:bgs$ jq -h jq - commandline JSON processor [version 1.5-1-a5b5cbe] Usage: jq [options] <jq filter> [file...] jq is a tool for processing JSON inputs, applying the given filter to its JSON text

java常用工具类(java技术交流群57388149)

package com.itjh.javaUtil; import java.util.ArrayList; import java.util.List; /** * * String工具类. <br> * * @author 宋立君 * @date 2014年06月24日 */ public class StringUtil { private static final int INDEX_NOT_FOUND = -1; private static final String EMPTY =

java常用的工具类

一.数组作为常用的数据结构,jdk在Arrays工具类中提供了很多有用的算法,并且根据不同的基本数据类型都有相应的重载,这里只列举名称. 接口 功能 说明 asList 将数组转换为List binarySearch 二分查找 入参必须有序,可以找到返回值>=0,否则返回小于0的值,不一定是-1 copyOf 从源数组进行复制 会截断或者扩充 copyOfRange 从源数据进行范围复制 deepEquals 多维数组的等值判断 deepHashCode 多维数组的哈希值 deepToStrin

Java使用Zxing生成、解析二维码工具类

Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法. 1.二维码的生成 (1).将Zxing-core.jar 包加入到classpath下. (2).二维码的生成需要借助MatrixToImageWriter类,该类是由Google提供的; package com.qlwb.business.util; //导入省略... /** * 二维码工具类 * */ public class MatrixToLogoImageWriter { priva

Java版本logo 名片二维码生成工具类

 package com.zzq; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Shape; import java.awt.font.FontRenderContext; import java.awt.ge

二维码工具类 - QrcodeUtils.java

二维码工具类,提供多种生成二维码.解析二维码的方法,包括中间logo的二维码等方法. 源码如下:(点击下载 - QrcodeUtils.java.MatrixToImageWriterEx.java.MatrixToLogoImageConfig.java.commons-io-2.4.jar.commons-lang-2.6.jar.slf4j-api-1.7.12.jar.javase-3.1.0.jar.core-3.1.0.jar .FolderUtils.java) QrcodeUti

java处理json的工具类(list,map和json的之间的转换)

需要下载第三方的jar :net.sf.json import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java

Java常用正则表达式验证工具类RegexUtils.java

原文:Java常用正则表达式验证工具类RegexUtils.java 源代码下载地址:http://www.zuidaima.com/share/1550463379442688.htm Java 表单注册常用正则表达式验证工具类,常用正则表达式大集合. 1. 电话号码 2. 邮编 3. QQ 4. E-mail 5. 手机号码 6. URL 7. 是否为数字 8. 是否为中文 9. 身份证 10. 域名 11. IP .... 常用验证应有尽有! 这的确是您从事 web 开发,服务器端表单验证