美文网首页
json转换工具jackson使用

json转换工具jackson使用

作者: return997 | 来源:发表于2019-04-21 20:50 被阅读0次

        Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对高些,并且Jackson社区相对比较活跃,更新速度也比较快.

    特点

    • 容易使用-jackson API 提供了一个高层次外观,以简化常用的用例。
    • 无需创建映射-API提供了提供了默认的映射大部分对象序列化。
    • 性能高 - 快速 低内存占用,适合大型对象图表或系统。
    • 干净的JSON jackson创建一个干净和紧凑的JSON结果,这是让人很容易阅读。
    • 不依赖 - 库不需要任何其他的库,除了JDK。
    • 开源代码 - jackson是开源的,可以免费使用

    三种方式处理JSON

    提供了三种不同的方法来处理JSON

    • 流式API - 读取并将JSON内容写入作为离散事件。 JsonParser读取数据,而JsonGenerator写入数据。它是三者中最有效的方法,是最低的开销和最快的读/写操作。它类似于Stax解析器XML。
    • 树模型 - 准备JSON文件在内存里以树形式表示。 ObjectMapper构建JsonNode节点树。这是最灵活的方法。它类似于XML的DOM解析器。
    • 数据绑定 - 转换JSON并从POJO(普通Java对象)使用属性访问或使用注释。它有两个类型。
             - 简单的数据绑定 - 转换JSON和Java Maps, Lists, Strings, Numbers, Booleans 和null 对象。
             -全部数据绑定 - 转换为JSON从任何JAVA类型。
      ObjectMapper读/写JSON两种类型的数据绑定。数据绑定是最方便的方式是类似XML的JAXB解析器。

    pom依赖

        <!--jackson-->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.9.6</version>
        </dependency>
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.9.6</version>
        </dependency>
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
          <version>2.9.6</version>
        </dependency>
    

    工具类

    package com.permission.util;
    
    import com.fasterxml.jackson.core.type.TypeReference;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import lombok.extern.slf4j.Slf4j;
    
    
    import java.io.IOException;
    
    /**
     * @version:1.0.0
     * @author: lironghong
     * @date: 2019/4/21 19:54
     * @description: jackson json工具转换
     */
    @Slf4j
    public class JsonUtils {
    
        private static ObjectMapper objectMapper = new ObjectMapper();
    
    /*    static {
            objectMapper.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
            objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
            objectMapper.setFilters(new SimpleFilterProvider().setFailOnUnknownId(false));
            objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_EMPTY);
        }*/
    
        public static <T> String objtoString(T src) {
            if (src == null) {
                return null;
            }
            try {
                return src instanceof String ? (String) src : objectMapper.writeValueAsString(src);
            } catch (IOException e) {
                log.warn("parse object to string exception", e);
                return null;
            }
        }
    
        public static <T> T stringtoObj(String src, TypeReference<T> typeReference) {
            if (src == null || typeReference == null) {
                return null;
            }
            try {
                return (T) (typeReference.getType().equals(String.class) ? src : objectMapper.readValue(src, typeReference));
            } catch (IOException e) {
                log.warn("parse string to object exception", e);
                return null;
            }
    
        }
    }
    
    
    

    相关文章

      网友评论

          本文标题:json转换工具jackson使用

          本文链接:https://www.haomeiwen.com/subject/zonjgqtx.html