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();
}
}
}