Json与对象之间的转换是项目中经常遇到的,所以可以写个封装类来实现他们之间的相互转换。
导入依赖
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
之后创建一个工具类,来实现json和对象的转换。
public class JsonUntil{
private static ObjectMapper objectMapper=new ObjectMapper();
static{
//ALWAYS设置是将对象所有字段进行序列化,可以设置空对象不进行序列化
ObjectMapper.setSerializationInclusion(Inclusion.ALWAYS);
//取消默认转换时间戳的设置
ObjectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS,false);
//忽略空bean转json的错误
ObjectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS,false);
//将日期格式统一
objectMapper.setDataFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
//忽略json字符串中存在,而java对象不存在的报错
objectMapper.confgure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
}
//转换没有格式化好的json
public static <T> String Object2String(T obj){
if(obj==null){
return null;
}
try{
return obj instanceof String ? (String)obj:objectMapper.writeValueAsString(obj);
}catch(Exception e){
return null;
}
}
//转换为格式化的json
public static <T> String Object2StringPerty(T obj){
if(obj==null){
return null;
}
try{
return obj instance of String ? (String)obj:objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
}catch(Exception e){
return null;
}
}
//将json转换为对象
public static <T> T String2Object(String str,Class clazz){
if(StringUnyils.isEmpty(str)||clazz==null){
return null;
}
try{
return clazz.equals(String.class)?(T)str:objectMapper.readValue(str,clazz);
}catch(Exception e){
return null;
}
}
//转换为多个对象的,如List<User>之类的
public static <T> T String2Object(String str,TypeReference<T> typeReference){
if(StringUnyils.isEmpty(str)||typeReference==null){
return null;
}
try{
return (T)(typeReference.getType.equals(String.class)?str:obejctMapper.readValue(str,typeReference));
}catch(Exception e){
return null;
}
}
//转换为多个对象的,如List<User>之类的
public static <T> T String2Object(String str,Class<?> collectionClass,Class<?>... elementClass){
JavaType javaType=objectMapper.getTypeFactory().constructParametricType(collectionClass,elementClass);
if(StringUnyils.isEmpty(str)||javaType==null){
return null;
}
try{
return objectMapper.readValue(str,javaType);
}catch(Exception e){
return null;
}
}
}
这样就能将所有的对象和json进行互相转换。