Json与Object转换器

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进行互相转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值