`

Jackson2.x通用工具类

 
阅读更多
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;

import org.apache.log4j.Logger;

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public class JsonUtils {
    private static Logger logger = Logger.getLogger(JsonUtils.class);
    private static final ObjectMapper objectMapper;
    static {
        objectMapper = new ObjectMapper();
        //去掉默认的时间戳格式
        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        //设置为中国上海时区
        objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
        //空值不序列化
        objectMapper.setSerializationInclusion(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);
    }

    public static <T> T toObject(String json, Class<T> clazz) {
        try {
            return objectMapper.readValue(json, clazz);
        } catch (JsonParseException e) {
            logger.error(e.getMessage(), e);
        } catch (JsonMappingException e) {
            logger.error(e.getMessage(), e);
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
        return null;
    }

    public static <T> String toJson(T entity) {
        try {
            return objectMapper.writeValueAsString(entity);
        } catch (JsonGenerationException e) {
            logger.error(e.getMessage(), e);
        } catch (JsonMappingException e) {
            logger.error(e.getMessage(), e);
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
        return null;
    }

    public static <T> T toCollection(String json, TypeReference<T> typeReference) {
        try {
            return objectMapper.readValue(json, typeReference);
        } catch (JsonParseException e) {
            logger.error(e.getMessage(), e);
        } catch (JsonMappingException e) {
            logger.error(e.getMessage(), e);
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
        return null;
    }

}

 

1
1
分享到:
评论

相关推荐

    android工具类

    "android工具类"这个主题涵盖了从UI操作到网络请求,再到数据处理等多个方面的通用功能。下面我们将深入探讨一些常见的Android工具类及其功能。 1. **UI工具类**: - `ViewUtils`:此类通常包含与视图操作相关的...

    webservice调用实例,通过HttpClient调用

    接下来,我们将创建一个`WebServiceUtil`类,这个类将封装Web服务调用的逻辑。首先,定义一个方法用于发送GET请求: ```java import org.apache.http.HttpEntity; import org.apache....

    android 公共框架

    2. **网络请求库**:通用工具类可能包含一个网络请求模块,如OkHttp或Retrofit,封装了HTTP请求,简化了API接口调用。这些工具通常支持异步处理、错误处理、缓存策略等。 3. **数据解析和序列化**:XML、JSON等数据...

    Android实现阿里OCR通用类文字识别Demo

    这里我们以“Android实现阿里OCR通用类文字识别Demo”为例,详细讲解这个过程。 首先,我们需要理解OCR(Optical Character Recognition,光学字符识别)技术,它是将图像中的文字转换为机器编码文本的过程。阿里云...

    eclipse链接hbase所需jar包,hbase版本1.2.6,Hadoop版本2.7.1

    2. **Hadoop Common**: 提供Hadoop的通用工具和库,包括网络通信、文件系统接口等。文件名可能为`hadoop-common-2.7.1.jar`。 3. **Hadoop HDFS**: Hadoop分布式文件系统的实现。文件名可能为`hadoop-hdfs-2.7.1....

    创建SpringMVC Mybatis项目时所需的jar包

    7. **Commons**: Apache Commons库,如`commons-lang3.jar`,提供各种通用的工具类,增强Java的内置功能。 8. **Jackson或Gson**: JSON序列化和反序列化库,如`jackson-databind.jar`或`gson-2.x.x.jar`,用于JSON...

    79个java常用的jar包

    4. **Apache Commons**: Apache Commons项目提供了许多实用工具类,如Commons Lang、Commons IO等,这些jar包包含了一些通用的、方便的函数,可以简化开发工作。 5. **Logging框架**: 如log4j、slf4j等,它们提供了...

    SpringMVC需要的jar包

    9. **其他依赖**:如Hibernate或MyBatis(如果使用ORM框架)、junit.jar(单元测试)、commons-lang3.jar(通用语言工具包)等,根据具体项目需求可能需要额外的库。 了解这些jar包的作用后,开发者可以根据实际...

    BasicApiBasicApi

    10. **工具类集合**:包括时间处理、字符串操作、文件操作等常用工具类,提高开发效率。 以上是对"BasicApiBasicApi"这个基础库的推测性解析,实际的功能可能会根据项目需求有所不同。使用这样的基础库,开发者可以...

    enum-converter:枚举的自定义转换器

    在Java编程语言中,枚举(Enum)是一种特殊的类,用于定义一组预定义的常量。枚举类型在很多场景下被广泛使用,比如表示状态、权限、颜色等固定值集合。然而,当涉及到与数据库交互或者需要进行JSON序列化和反序列化...

    GenericJacksonJSON:Git repo随我的博客文章一起介绍如何将json转换为通用java对象并返回的编写方法

    &lt;version&gt;2.x.x&lt;/version&gt; &lt;!-- 请使用最新版本 --&gt; ``` 2. **定义Java类**:创建一个Java类,该类代表你希望从JSON中解析出的数据结构。使用Jackson注解如`@JsonProperty`来指定JSON字段对应的Java属性。...

    curator zookeeper 3.4.6 2.9.1

    1. guava-18.0.jar:这是Google的Guava库,提供了一组通用的Java集合框架、多线程支持、I/O工具等,对于Curator的某些功能实现至关重要,比如缓存管理和延迟任务。 2. mockito-all-1.9.0.jar:Mockito是一个单元...

    JAVA上百实例源码以及开源项目源代码

    图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...

    jbpm4.4最小依赖jar包

    8. **Testing and Utilities**:还有一些辅助库,如JUnit用于单元测试,Apache Commons或Guava等提供了通用的工具类,用于提高开发效率。 9. **XML解析和XPath**:jbpm使用XML来定义流程模型,可能包含如JAXB或DOM4...

    httpClient的xml,form,json提交

    首先,我们来看`HttpClientUtil.java`,这是一个常见的工具类,通常包含一系列静态方法,用于简化HttpClient的使用。例如,可能有方法用于创建HTTP连接管理器、发送GET请求、POST请求,以及处理响应。这些方法可能会...

    『若水新闻』客户端开发教程全部源码

    2. `library`模块(如果存在):可能包含自定义控件或通用工具类,为`app`模块提供服务。 3. `data`模块:可能包含数据访问对象(DAO)和数据库相关代码,用于存储和管理新闻数据。 4. `model`模块:封装了网络请求...

    android layout XML解析错误的解决方法

    本文将深入探讨如何解决"android layout XML解析错误"的问题,以及提供一些通用的XML解析方法。 首先,让我们来看看标题和描述中提到的具体错误:"org.xmlpull.v1.XmlPullParserException: PI must not start with ...

Global site tag (gtag.js) - Google Analytics