「Java 开发工具」JsonUtil JSON工具类

178 阅读2分钟

🌟废话不多说系列,直接开干! 🌟

美女5.png

📢 JSON 工具类有很多:如 GSONFastjsonJackson 等操作 JSON 字符串有对象之间的转换。本文使用 Spring Boot 默认的Jackson 来演示提供 JSON 工具类。

此工具类的核心功能有:

  • map对象转成json字符串;
  • json字符串转换成java对象
  • list转成json字符串
  • 对象转成json字符串
一、引入依赖

注意:如果是 Spring Boot 则不需要自动引入此依赖;(下面依赖虽多,单都是以 Jackson 为主)

<!-- UTILS start -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-jaxb-annotations</artifactId>
    <optional>true</optional>
</dependency>
<!-- UTILS end -->

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.9.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.8</version>
</dependency>
二、完整源码
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Linpeizhan
 * @date 7/16/15
 */
public class JsonUtil {
    private static ObjectMapper mapper;

    /**
     * 获取ObjectMapper实例
     *
     * @param createNew 方式:true,新实例;false,存在的mapper实例
     * @return
     */
    public static synchronized ObjectMapper getMapperInstance(boolean createNew) {
        if (createNew) {
            return new ObjectMapper();
        } else if (mapper == null) {
            mapper = new ObjectMapper();
        }
        return mapper;
    }

    /**
     * map对象转成json字符串
     *
     * @param object map对象
     * @return map的json字符串
     */
    public static String mapToJson(Object object) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(object);
    }

    /**
     * list转成json字符串
     *
     * @param list list
     * @return list的json字符串
     */
    public static String listToJson(List list) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(list);
    }

    /**
     * 对象转成json字符串
     *
     * @param object 对象
     * @return 对象的json字符串
     */
    public static String objectToJson(Object object) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(object);
    }

    /**
     * 将json字符串转换成java对象
     *
     * @param json 准备转换的json字符串
     * @param cls  准备转换的类
     * @return
     * @throws Exception
     */
    public static Object jsonToBean(String json, Class<?> cls) throws Exception {
        try {
            ObjectMapper objectMapper = getMapperInstance(false);
            Object vo = objectMapper.readValue(json, cls);
            return vo;
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
    }

    /**
     * 将json字符串转换成java对象
     *
     * @param json      准备转换的json字符串
     * @param cls       准备转换的类
     * @param createNew ObjectMapper实例方式:true,新实例;false,存在的mapper实例
     * @return
     * @throws Exception
     */
    public static Object jsonToBean(String json, Class<?> cls, Boolean createNew) throws Exception {
        try {
            ObjectMapper objectMapper = getMapperInstance(createNew);
            Object vo = objectMapper.readValue(json, cls);
            return vo;
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
    }

    public static void writeOutJsonData(HttpServletResponse response, Object data) throws IOException {
        try {
            response.setContentType("Content-Type=text/plain; charset=UTF-8");// CharacterEncoding
            PrintWriter out = response.getWriter();
            if (data instanceof ArrayList) {
                //JSONArray jsonArray = JSONArray.fromObject(data);

                out.write(JsonUtil.listToJson((List) data).toString());
            } else {
               /* JSONObject jsonObject = new JSONObject();
                jsonObject.put("result", data);
                String jsonStr = jsonObject.toString();*/
                out.write(JsonUtil.objectToJson(data));
            }
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


🙏至此,感谢阅读🙏

美女5.png