Java知识点 --- ObjectMapper的使用

   ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构,反之亦然。它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写。

第一步:依赖包的导入

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

第二步:代码的编写

public class ObjectConvertJson{
     private static ObjectMapper mapper;
     
     static {
        mapper = new ObjectMapper();
        dynamicMapper= new ObjectMapper();
         //默认时间格式(非必须要设定的属性)
        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        //Include.Include.ALWAYS 默认
        //Include.NON_DEFAULT 属性为默认值不序列化
        //Include.NON_EMPTY 属性为 空(“”)  或者为 NULL 都不序列化
        //Include.NON_NULL 属性为NULL 不序列化
        mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
      }

     /**
     * 对象序列化为字符串
     */
    public static String serializeAsString(Object object) {
        if (object == null) {
            return "";
        }
        try {
            return mapper.writeValueAsString(object);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     *对象序列化为字符集合
     */
    public static byte[] serializeAsByte(Object object) {
        if (object == null) {
            return new byte[0];
        }
        try {
            return mapper.writeValueAsBytes(object);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

     /**
     * json串转换为指定类型的Object
     */
    public static <T> T parseJsonToObject(String objectJson, Class<T> targetClass) {
        try {
            return mapper.readValue(objectJson, targetClass);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * json串转换为Map
     */
    public static <K, V> Map<K, V> parseJsonToMap(String objectJson, Class<K> keyClass, Class<V> valueClass) {
        if (StringUtils.isEmpty(objectJson)) {
            return Collections.emptyMap();
        }
        try {
            return mapper.readValue(objectJson,
                    mapper.getTypeFactory().constructMapType(HashMap.class, keyClass, valueClass));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 将对象转换为类
     */
    public static <T> T convertObjectToClass(Object object, Class<T> elementClasses){
        try {
            // 忽略不存在的字段
            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            return mapper.convertValue(object, elementClasses);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 将对象转换为集合类型
     */
    public static <T> ArrayList<T> convertObjectToArrayList(Object object, Class<T> elementClasses){
        try {
            JavaType javaType = mapper.getTypeFactory().constructParametricType(ArrayList.class, elementClasses);
            return mapper.convertValue(object, javaType);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

   
}
发布了42 篇原创文章 · 获赞 3 · 访问量 3936

猜你喜欢

转载自blog.csdn.net/zhangting19921121/article/details/102952107