一、Java 中 JacksonUtil 工具
在 Java 开发中,对象与 JSON 数据的相互转换是一项常见且重要的任务。JacksonUtil 工具类为我们提供了方便的方法来进行这种转换操作。
二、Java 中对象与 JSON 转换的一般方法
在 Java 中,通常使用 Jackson 库来实现对象与 JSON 之间的转换。
三、实现内容介绍
JacksonUtil 类包含了一些静态方法,用于将对象转换为 JSON 字符串,以及将 JSON 字符串转换为对象。
四、具体方法
getInstance
方法:获取静态的ObjectMapper
对象。writeValueAsString
方法:将对象转换为 JSON 字符串,若转换过程中出现异常,则返回null
并记录错误日志。readValue
方法:将 JSON 字符串转换为指定类型的对象,若转换过程中出现异常,则返回null
并记录错误日志。- 另一个
readValue
方法的重载:用于将 JSON 字符串转换为指定泛型类型的对象。
五、总结
JacksonUtil 工具类为 Java 中对象与 JSON 数据的转换提供了便捷的方法,在实际开发中具有很大的实用价值。
六、源码
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Jackson util
*
* 1、obj 需要有私有属性和对应的 set/get 方法;
* 2、不支持内部类;
*
* @author xxx
*/
public class JacksonUtil {
private static Logger logger = LoggerFactory.getLogger(JacksonUtil.class);
private final static ObjectMapper objectMapper = new ObjectMapper();
public static ObjectMapper getInstance() {
return objectMapper;
}
/**
* bean、array、List、Map --> json
*
* @param obj
* @return json 字符串
* @throws Exception
*/
public static String writeValueAsString(Object obj) {
try {
return getInstance().writeValueAsString(obj);
} 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;
}
/**
* string --> bean、Map、List(array)
*
* @param jsonStr
* @param clazz
* @return obj
* @throws Exception
*/
public static <T> T readValue(String jsonStr, Class<T> clazz) {
try {
return getInstance().readValue(jsonStr, 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;
}
/**
* string --> List<Bean>...
*
* @param jsonStr
* @param parametrized
* @param parameterClasses
* @param <T>
* @return
*/
public static <T> T readValue(String jsonStr, Class<?> parametrized, Class<?>... parameterClasses) {
try {
JavaType javaType = getInstance().getTypeFactory().constructParametricType(parametrized, parameterClasses);
return getInstance().readValue(jsonStr, javaType);
} 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;
}
}