pull/4/head
zhouyu 9 months ago
parent 43b7449939
commit e09b4acc4e

@ -15,112 +15,134 @@ import java.text.SimpleDateFormat;
/**
* jackson
*/
// 使用lombok的@Slf4j注解用于自动生成日志相关的代码方便在类中记录各种操作相关的日志信息便于后续查看操作情况以及进行问题排查例如在进行对象序列化、反序列化操作出现问题时通过日志记录错误信息有助于定位和解决问题。
@Slf4j
public class JsonUtil {
// 创建一个ObjectMapper对象ObjectMapper是Jackson库中用于处理JSON数据与Java对象之间相互转换的核心类这里将其定义为静态成员变量方便在整个类的各个静态方法中共享使用避免重复创建对象提高效率。
private static ObjectMapper objectMapper = new ObjectMapper();
// 静态代码块在类加载时执行用于对ObjectMapper对象进行一系列的配置设置以满足特定的JSON处理需求确保在序列化和反序列化操作时按照期望的方式进行。
static {
// 设置序列化时包含所有字段即无论字段的值是否为null都将其列入进行转换默认情况下有些配置可能会忽略null值字段这里通过设置JsonSerialize.Inclusion.ALWAYS来确保所有字段都参与序列化使得转换后的JSON数据能完整反映Java对象的结构。
//所有字段都列入进行转换
objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.ALWAYS);
// 取消默认将日期类型转换为时间戳形式的行为改为按照指定的格式进行转换这样在处理包含日期字段的Java对象转换为JSON时日期会以更易读、符合业务需求的格式呈现而不是以时间戳的形式出现方便查看和使用。
//取消默认转换timestamp形式
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS,false);
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
// 配置忽略空bean即没有属性值的Java对象转JSON时的错误避免在转换这样的对象时抛出异常使得即使对象为空也能正常进行序列化操作返回相应的JSON表示可能为空对象的JSON形式
//忽略空bean转json的错误
objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS,false);
objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
// 统一设置日期的格式使用DateTimeUtil类中定义的标准格式"yyyy-MM-dd HH:mm:ss"),确保在整个应用中,涉及日期类型的序列化和反序列化操作都能按照这个统一的格式进行,保证日期数据的一致性和可读性。
//统一时间的格式
objectMapper.setDateFormat(new SimpleDateFormat(DateTimeUtil.STANDARD_FORMAT));
// 配置忽略JSON数据中存在属性但对应的Java对象不存在该属性时的错误这样在进行反序列化操作时即使JSON数据包含一些Java对象中未定义的额外属性也不会抛出异常提高了对不同格式JSON数据的兼容性方便处理一些可能存在扩展属性的情况。
//忽略json存在属性但是java对象不存在属性的错误
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
/**
*
* @param obj
* @param <T>
* @return
* JavaobjJSON便使
* nullnull
* null使ObjectMapperwriteValueAsStringJSONIOJSONlog.warnparse object to string errornull
*
* @param obj JSONJavaJSONObjectMapperJSON
* @param <T> 使
* @return JSONnullnullJSON
*/
public static <T> String obj2String(T obj){
if(obj == null){
public static <T> String obj2String(T obj) {
if (obj == null) {
return null;
}
try {
return obj instanceof String ? (String) obj : objectMapper.writeValueAsString(obj);
return obj instanceof String? (String) obj : objectMapper.writeValueAsString(obj);
} catch (IOException e) {
log.warn("parse object to string error",e);
log.warn("parse object to string error", e);
return null;
}
}
/**
* 便
* @param obj
* @param <T>
* @return
* obj2StringJavaJSON便JSON使JSON便
* nullnullnull使ObjectMapperwriterWithDefaultPrettyPrinterJSONwriteValueAsStringJSONIOnull便
*
* @param obj JSONJavaJSON
* @param <T>
* @return JSONnullnullJSON便
*/
public static <T> String obj2StringPretty(T obj){
if(obj == null){
public static <T> String obj2StringPretty(T obj) {
if (obj == null) {
return null;
}
try {
return obj instanceof String ? (String) obj : objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
return obj instanceof String? (String) obj : objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
} catch (IOException e) {
log.warn("parse object to string error",e);
log.warn("parse object to string error", e);
return null;
}
}
/**
*
* @param str
* @param clazz
* @param <T>
* @return
* JSONstrclazzJava便JSONJava
* StringUtils.isEmptyclazznullnull
* String使ObjectMapperreadValueclazzJSONJavaIOJSONnullJava
*
* @param str JavaJSONObjectMapper
* @param clazz JavaClassUser.classJSONUser
* @param <T> Javaclazz
* @return JavanullnullJava便使
*/
public static <T> T String2Obj(String str,Class<T> clazz){
if(StringUtils.isEmpty(str) || clazz == null){
public static <T> T String2Obj(String str, Class<T> clazz) {
if (StringUtils.isEmpty(str) || clazz == null) {
return null;
}
try {
return clazz.equals(String.class)?(T)str:objectMapper.readValue(str,clazz);
return clazz.equals(String.class)? (T) str : objectMapper.readValue(str, clazz);
} catch (IOException e) {
log.warn("parse string to obj error",e);
log.warn("parse string to obj error", e);
return null;
}
}
/**
*
* @param str
* @param typeReference
* @param <T>
* @return
* ClassTypeReference
* JSONStringUtils.isEmptyTypeReferencenullnull
* TypeReferenceTypeReferenceString使ObjectMapperreadValueTypeReferenceJSONJavaIOnull
*
* @param str JavaJSONTypeReference
* @param typeReference TypeReference便JSONJava
* @param <T> JavaTypeReference使
* @return JavatypeReferencenullnullJava使
*/
public static <T> T Str2Obj(String str, TypeReference typeReference){
if(StringUtils.isEmpty(str) || typeReference == null){
public static <T> T Str2Obj(String str, TypeReference typeReference) {
if (StringUtils.isEmpty(str) || typeReference == null) {
return null;
}
try {
return (T) (typeReference.getType().equals(String.class)?str:objectMapper.readValue(str,typeReference));
return (T) (typeReference.getType().equals(String.class)? str : objectMapper.readValue(str, typeReference));
} catch (IOException e) {
log.warn("parse string to obj error",e);
log.warn("parse string to obj error", e);
return null;
}
}
/**
*
* @param str
* @param collectionClass
* @param elementClasses
* @param <T>
* @return
* collectionClasselementClassesJavaType
* ObjectMappergetTypeFactory使constructParametricTypeJavaTypeJavaType
* 使ObjectMapperreadValueJavaTypeJSONJavaIOnull
*
* @param str JavaJSONJavaType
* @param collectionClass List.classSet.class
* @param elementClasses User.classAddress.class
* @param <T> JavaJavaType使
* @return JavanullJava便
*/
public static <T> T Str2Obj(String str,Class<?> collectionClass,Class<?>... elementClasses){
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(collectionClass,elementClasses);
public static <T> T Str2Obj(String str, Class<?> collectionClass, Class<?>... elementClasses) {
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
try {
return objectMapper.readValue(str,javaType);
return objectMapper.readValue(str, javaType);
} catch (IOException e) {
log.warn("parse string to obj error",e);
log.warn("parse string to obj error", e);
return null;
}
}
}
}
Loading…
Cancel
Save