Json序列化java工具类

json序列化通用工具类(java)

>为了支持此工具类的正常使用,先导入以下jar包
1.lombok包是一个简化java冗余代码的jar包,实际开发中很方便

在maven的pom文件中导入lombok坐标
<dependency>    <groupId>org.projectlombok</groupId>    <artifactId>lombok</artifactId>    <version>1.16.18</version></dependency>

2.json序列化jar包
在maven的pom文件中导入lombok坐标
<dependency>    <groupId>org.codehaus.jackson</groupId>    <artifactId>jackson-mapper-asl</artifactId>    <version>1.9.12</version></dependency>

3.String处理的jar包
<dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-lang3</artifactId>    <version>3.5</version></dependency>
工具类如下:
import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang.StringUtils;import org.codehaus.jackson.map.DeserializationConfig;import org.codehaus.jackson.map.ObjectMapper;import org.codehaus.jackson.map.SerializationConfig;import org.codehaus.jackson.map.annotate.JsonSerialize;import org.codehaus.jackson.type.JavaType;import org.codehaus.jackson.type.TypeReference;

import java.text.SimpleDateFormat;

@Slf4jpublic class JsonUtil {

private static ObjectMapper objectMapper = new ObjectMapper();    private static final String STANDARD_FORMAT = "yyyy-MM-dd HH:mm:ss";

static {        //对象的所有字段全部列入        objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.ALWAYS);        //取消默认转换timestamps形式        objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);        //忽略空Bean转json的错误        objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);        //所有的日期格式都统一为以下的样式,即yyyy-MM-dd HH:mm:ss        objectMapper.setDateFormat(new SimpleDateFormat(STANDARD_FORMAT));        //忽略 在json字符串中存在,但是在java对象中不存在对应属性的情况。防止错误        objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);    }

public static <T> String obj2String(T obj) {        if (obj == null) {            return null;        }        try {            return obj instanceof String ? (String) obj : objectMapper.writeValueAsString(obj);        } catch (Exception e) {            log.warn("Parse Object to String error", e);            return null;        }    }

public static <T> String obj2StringPretty(T obj) {        if (obj == null) {            return null;        }        try {            return obj instanceof String ? (String) obj : objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);        } catch (Exception e) {            log.warn("Parse Object to String error", e);            return null;        }    }

public static <T> T string2Obj(String str, Class<T> clazz) {        if (StringUtils.isEmpty(str) || clazz == null) {            return null;        }

try {            return clazz.equals(String.class) ? (T) str : objectMapper.readValue(str, clazz);        } catch (Exception e) {            log.warn("Parse String to Object error", e);            return null;        }    }

public static <T> T string2Obj(String str, TypeReference<T> typeReference) {        if (StringUtils.isEmpty(str) || typeReference == null) {            return null;        }        try {            return (T) (typeReference.getType().equals(String.class) ? str : objectMapper.readValue(str, typeReference));        } catch (Exception e) {            log.warn("Parse String to Object error", e);            return null;        }    }

public static <T> T string2Obj(String str, Class<?> collectionClass, Class<?>... elementClasses) {        JavaType javaType = objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);        try {            return objectMapper.readValue(str, javaType);        } catch (Exception e) {            log.warn("Parse String to Object error", e);            return null;        }    }

此工具类非常通用,建议使用,里面的参数可根据自己的需求自行调整。

原文地址:https://www.cnblogs.com/cham-dxx/p/9043642.html

时间: 2024-08-24 06:44:32

Json序列化java工具类的相关文章

将任意格式转换为JSON数据格式的工具类

Java的将任意格式转换为JSON数据格式的工具类 package org.sjw.utils; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.util.List; import java.util.Map; import java.util.Set; public class JsonUtils

java工具类系列 (四.SerializationUtils)

java工具类系列 (四.SerializationUtils) SerializationUtils该类为序列化工具类,也是lang包下的工具,主要用于序列化操作 import java.io.Serializable;

排名前 16 的 Java 工具类

在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在finally块 toString:转换IO流. Uri. byte[]为String copy:IO流数据复制,从输入流写到输出流中,最大支

排名前16的Java工具类

原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在finally块 toString:转换IO流. Uri.

常用高效 Java 工具类总结

一.前言 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 二.org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在finally块 toString:转换IO流. Uri. byte[]为String copy:IO流数据复制,从输入流写到输出流中

16 个超级实用的 Java 工具类

阅读本文大概需要 4 分钟. 出处:alterem juejin.im/post/5d4a25b351882505c105cc6e 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在fina

超级实用的 Java 工具类

超级实用的 Java 工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在finally块 toString:转换IO流. Uri. byte[]为String copy:IO流数据复制

【小技巧】排名前 16 的 Java 工具类!

转自java技术栈: https://mp.weixin.qq.com/s?__biz=MzI3ODcxMzQzMw==&mid=2247485460&idx=1&sn=cef982d688a5b0ef5e42a4301961f54b&chksm=eb538d22dc240434251b32f924cd44b7ac68c041dbe84d264c2ea0156902c7d2c816581b65da&scene=21#wechat_redirect 在Java中,工具

第一章 Java工具类目录

在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算