Fastjson使用TypeReference示例
Fastjson是一个用于Java语言的JSON解析库,支持JavaBean的序列化和反序列化,并提供了丰富的JSON处理工具。
在Fastjson中,我们经常需要使用TypeReference来获取泛型的类型信息。本文将介绍如何使用TypeReference来实现复杂类型的JSON序列化和反序列化。
JSON序列化
下面是一个示例Bean:
public class User {
private String name;
private int age;
private List<String> hobbies;
// 省略getter、setter方法
}
存在一个List<User>
类型的对象:
List<User> userList = new ArrayList<>();
User user1 = new User();
user1.setName("Tom");
user1.setAge(18);
user1.setHobbies(Arrays.asList("reading", "coding"));
User user2 = new User();
user2.setName("Jerry");
user2.setAge(22);
user2.setHobbies(Arrays.asList("watching TV", "basketball"));
userList.add(user1);
userList.add(user2);
我们要将其转换为JSON字符串:
String jsonStr = JSON.toJSONString(userList);
System.out.println(jsonStr);
输出结果为:
[{"age":18,"hobbies":["reading","coding"],"name":"Tom"},{"age":22,"hobbies":["watching TV","basketball"],"name":"Jerry"}]
现在假设我们有一个类Result<T>
,该类包含一个t
属性,用于存储结果数据:
public class Result<T> {
private T t;
// 省略getter、setter方法
}
我们想要将ResultTypeReference
来获取泛型的类型信息,然后将其传递给Fastjson。
Result<User> result = new Result<>();
result.setT(userList);
Type type = new TypeReference<Result<User>>(){}.getType();
String jsonStr = JSON.toJSONString(result, type);
System.out.println(jsonStr);
输出结果为:
{"t":[{"age":18,"hobbies":["reading","coding"],"name":"Tom"},{"age":22,"hobbies":["watching TV","basketball"],"name":"Jerry"}]}
上述示例中,我们首先创建了一个Result<User>
类型的对象,并将其t
属性设置为userList
。然后,我们使用TypeReference<Result<User>>().getType()
来获取泛型的类型信息,并将其传递给Fastjson进行序列化。
JSON反序列化
同样的,我们可以使用TypeReference来获取泛型的类型信息,并将其传递给Fastjson进行反序列化。
假设我们有如下JSON字符串:
{"t":[{"age":18,"hobbies":["reading","coding"],"name":"Tom"},{"age":22,"hobbies":["watching TV","basketball"],"name":"Jerry"}]}
我们可以将其反序列化为Result<User>
类型的对象:
String jsonStr = "{\"t\":[{\"age\":18,\"hobbies\":[\"reading\",\"coding\"],\"name\":\"Tom\"},{\"age\":22,\"hobbies\":[\"watching TV\",\"basketball\"],\"name\":\"Jerry\"}]}";
Type type = new TypeReference<Result<User>>(){}.getType();
Result<User> result = JSON.parseObject(jsonStr, type);
List<User> userList2 = result.getT();
System.out.println(userList2.toString());
输出结果为:
[User(name=Tom, age=18, hobbies=[reading, coding]), User(name=Jerry, age=22, hobbies=[watching TV, basketball])]
上述示例中,我们首先创建了一个JSON字符串,并使用TypeReference<Result<User>>().getType()
来获取泛型的类型信息。然后,我们将其传递给Fastjson进行反序列化,并将结果存储在Result<User>
类型的对象中。
最后,我们从Result<User>
对象中获取t
属性,即List<User>
类型的对象,并输出其结果。
总结
本文主要介绍了使用TypeReference来实现复杂类型的JSON序列化和反序列化。在实际的开发中,我们会经常使用到泛型和复杂类型,TypeReference提供了一种简单的方式来获取泛型的类型信息,使我们能够轻松地完成操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:fastjson使用TypeReference示例 - Python技术站