Json中泛型对象转换和泛型传递

1.使用jackson

ObjectMapper mapper = new ObjectMapper();

A<B<C>> resultObj = mapper.readValue("转换json",new TypeReference<A<B<C>>>(){});

A为接收类型,B为A的泛型类,C为B的泛型类

2.使用fastjson

A<B<C>> resultObj =JSON.parseObject("转换json",new TypeReference<A<B<C>>>(){});
 
*A为接收类型,B为A的泛型类,C为B的泛型类

泛型转换:

jackson;

public static<T> DataBase<T> parseJson(String json,Class<T> type){
	DataBase<T> dataBase = null;
	try{
		JavaType javaType = TypeFactory.defaultInstance().constructParametricType(DataBase.class,type);
            //或 JavaType javaType = objectMapper.getTypeFactory().constructParametricType(DataBase.class, type);  

		dataBase = objectMapper.readValue(json,javaType);
	} catch(Exception e){
		e.printStackTrace();
	}
	return dataBase;
}

fastjson:

public static <T> T convertToBean(String jsonStr, Type[] actualArguments, Type rawType) {
        Type type = new ParameterizedTypeImpl(actualArguments, null, rawType);
        return JSON.parseObject(jsonStr, type);
    }

// 转换成List<String>
	String listJsonData2 = "[{\"sname\":\"张三\",\"sage\":10,\"sid\":\"1\"},{\"sname\":\"李四\",\"sage\":20,\"sid\":\"2\"}]";
	List<Student> list2 = FastJsonUtil.convertToBean(listJsonData2, new Type[]{Student.class}, List.class);
	System.out.println(list2);

// 转为map
// 写法一:
	String mapJsonData = "{\"1\":{\"sname\":\"张三\",\"sage\":10,\"sid\":\"1\"},\"2\":{\"sname\":\"李四\",\"sage\":20,\"sid\":\"2\"}}";
	Map<Integer, Student> map = FastJsonUtil.convertToBean(mapJsonData, new Type[]{Integer.class, Student.class}, Map.class);
	System.out.println(map);


// 写法二:(可以稍微作下封装)
	Map<Integer, Student> map2 = JSON.parseObject(mapJsonData, new HashMap<Integer, Student>(){}.getClass().getGenericSuperclass());
	System.out.println(map2);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值