Fastjson 泛型 json 转 对象

Fastjson 泛型 json 转 对象

通过泛型,将具有相同规律的json串,解析为同一个对象。

1、查询Student对象返回的json串:

 {
	 "status":200,
	 "data":[
				 {
				 "studentId":"1",
				 "name":"tom",
				 "age":18,
				 "className":"07计本1班"
				 },
				 {
				 "studentId":"2",
				 "name":"jim",
				 "age":28,
				 "className":"07网工1班"
				 }
	 ],
	 "message":"查询成功"
 }

查询Teacher返回的json串。

{
	 "status":200,
	 "data":[
				 {
				 "teacherId":"1",
				 "name":"Lisa",
				 "age":38
				 },
				 {
				 "teacherId":"2",
				 "name":"ShaLi",
				 "age":34
				 }
	 ],
	 "message":"查询成功"
 }

2、构建实体类:
student类:
(@Data是Lombok插件的注解)

@Data
public class Student {
    private String studentId;
    private String name;
    private Integer age;
    private String className;
}

teacher类:

@Data
public class Teacher {
    private String teacherId;
    private String name;
    private Integer age;
}

3、构建泛型类: ResultObject

@Data
public class ResultObject<T> {
    private Integer status;
    private List<T> data;
    private String message;
}

4、写个测试类:

public class ParseTest {

    public static void main(String[] args) {

        parseStudent();
        parseTeacher();
    }

    private static void parseStudent() {
        String studentJson=" {\n" +
                " \"status\":200,\n" +
                " \"data\":[\n" +
                " {\n" +
                " \"studentId\":\"1\",\n" +
                " \"name\":\"tom\",\n" +
                " \"age\":18,\n" +
                " \"className\":\"07计本1班\"\n" +
                " },\n" +
                " {\n" +
                " \"studentId\":\"2\",\n" +
                " \"name\":\"jim\",\n" +
                " \"age\":28,\n" +
                " \"className\":\"07网工1班\"\n" +
                " }\n" +
                " ],\n" +
                " \"message\":\"查询成功\"\n" +
                " }";

        ResultObject<Student> resultObject = JSON.parseObject(studentJson,new TypeReference<ResultObject<Student>>(){});
        Integer status = resultObject.getStatus();
        String message = resultObject.getMessage();
        List<Student> list = resultObject.getData();

        System.out.println(status+"|"+message+"|"+list);
    }

    private static void parseTeacher() {
        String teacherJson="{\n" +
                " \"status\":200,\n" +
                " \"data\":[\n" +
                " {\n" +
                " \"teacherId\":\"1\",\n" +
                " \"name\":\"Lisa\",\n" +
                " \"age\":38\n" +
                " },\n" +
                " {\n" +
                " \"teacherId\":\"2\",\n" +
                " \"name\":\"ShaLi\",\n" +
                " \"age\":34\n" +
                " }\n" +
                " ],\n" +
                " \"message\":\"查询成功\"\n" +
                " }";

        ResultObject<Teacher> resultObject = JSON.parseObject(teacherJson,new TypeReference<ResultObject<Teacher>>(){});
        Integer status = resultObject.getStatus();
        String message = resultObject.getMessage();
        List<Teacher> list = resultObject.getData();

        System.out.println(status+"|"+message+"|"+list);
    }
}

5、测试结果:

200|查询成功|[Student(studentId=1, name=tom, age=18, className=07计本1班), Student(studentId=2, name=jim, age=28, className=07网工1班)]
200|查询成功|[Teacher(teacherId=1, name=Lisa, age=38), Teacher(teacherId=2, name=ShaLi, age=34)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中使用fastjson进行泛型类的反序列化,你可以按照以下步骤进行操作: 首先,确保你已经引入了fastjson的依赖,可以通过Maven等构建工具添加以下依赖项: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.79</version> </dependency> ``` 接下来,假设你有一个泛型类`Result<T>`,如下所示: ```java import com.alibaba.fastjson.JSON; public class Result<T> { private int code; private String message; private T data; public Result(int code, String message, T data) { this.code = code; this.message = message; this.data = data; } public int getCode() { return code; } public String getMessage() { return message; } public T getData() { return data; } public static <T> Result<T> fromJson(String json, Class<T> clazz) { return JSON.parseObject(json, new TypeReference<Result<T>>(clazz) {}.getType()); } } ``` 在上述代码中,`fromJSON`方法使用fastjson的`parseObject`方法将JSON字符串反序列化为`Result<T>`对象。 然后,你可以使用以下代码将JSON字符串反序列化为具体的泛型对象: ```java import com.alibaba.fastjson.JSON; public class Main { public static void main(String[] args) { String json = "{\"code\":200,\"message\":\"Success\",\"data\":{\"name\":\"John\",\"age\":25}}"; Result<User> result = Result.fromJson(json, User.class); System.out.println("Code: " + result.getCode()); System.out.println("Message: " + result.getMessage()); User user = result.getData(); System.out.println("Name: " + user.getName()); System.out.println("Age: " + user.getAge()); } } ``` 在上述代码中,我们将一个包含`User`对象JSON字符串反序列化为`Result<User>`对象,并输出其中的字段值。 请注意,为了正确反序列化泛型类,我们需要通过传递`Class<T>`参数给`fromJSON`方法来指定具体的泛型类型。 以上就是使用fastjson进行泛型类反序列化的基本示例。当然,根据实际需求和数据结构的复杂程度,你可能需要进行更多的定制和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值