如何使用SpringBoot解析JSON数组


{"errcode":0,"result":[{"check_date_time":"2021-08-27 17:57:30","check_status":"Checked","check_type":"OnDuty","corp_id":"ding7c748955d913770335c2f4657eb6378f","gmt_create":"2021-08-27 17:57:31","gmt_modified":"2021-08-27 17:57:31","group_id":-1,"id":235069117132,"is_rest":"N","real_plan_time":"2021-08-27 17:57:30","user_id":"242157225634238654","work_date":"2021-08-27 00:00:00"}],"success":true,"request_id":"8kus66o51zb2"}

之前的


{"errcode":0,"result":{"approve_list":[],"attendance_result_list":[{"check_type":"OffDuty","class_id":214655132,"group_id":240975087,"location_method":"ATM","location_result":"Normal","plan_check_time":"2021-07-14 17:00:00","plan_id":217863022888,"record_id":67835293281,"source_type":"ATM","time_result":"Normal","user_address":"前台","user_check_time":"2021-07-14 17:15:35"},{"check_type":"OnDuty","class_id":214655132,"group_id":240975087,"location_method":"ATM","location_result":"Normal","plan_check_time":"2021-07-14 08:00:00","plan_id":217863022887,"record_id":67956355229,"source_type":"ATM","time_result":"Normal","user_address":"前台","user_check_time":"2021-07-14 07:58:52"}],"check_record_list":[{"record_id":67835293281,"source_type":"ATM","user_check_time":"2021-07-14 17:15:35","valid_matched":true},{"record_id":67956355229,"source_type":"ATM","user_check_time":"2021-07-14 07:58:52","valid_matched":true}],"class_setting_info":{"rest_time_vo_list":[{"rest_begin_time":14400000,"rest_end_time":18000000}]},"corpId":"ding7c748955d913770335c2f4657eb6378f","userid":"51191","work_date":"2021-07-14 09:00:00"},"success":true,"request_id":"10hbita0g2902"}

然后用了两种办法,一种因为缺少Object名导致不知道怎么单独建list,从而无法反序列化。第二种直接创建LIST导致无法正常CAST


public class ToResultDTO {
    private Integer errcode;
    private ArrayList<Item> result;
    private String success;
    private String request_id;

    static class Item{
        private String check_date_time;
        private String check_status;
        private String check_type;
        private String corp_id;
        private String gmt_create;
        private String gmt_modified;
        private String group_id;
        private String id;
        private String is_rest;
        private String real_plan_time;
        private String user_id;
        private String work_date;
    }

}

ObjectMapper,直接给你解析成对象,你可以为所欲为

JSONArray

springboot解析json数组对象_luobw的博客-CSDN博客 1、post请求json数组对象[ { "name": "2 (12)", "creator": "zhjx", "createTime": "2019-03-20 10:47:28", "updateTime": "2019-03-20 10:47:28", ... https://blog.csdn.net/luo_Json/article/details/88687529

其它若干解决方案
Spring Boot的Json解析方案 - 知乎 1.Json@ResponseBody使java对象返回为Json数组,一般使用@ResponseBody,@ResponseBody的作用是将java对象转为json格式的数据。@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定… https://zhuanlan.zhihu.com/p/110786732

之前的Json字符串定义的实体类:

public class JsonData {

    public int errcode;
    public Result result;
    public boolean success;
    public String request_id;
}

class Result{
    public List<String> approve_list;
    public List<Attendance> attendance_result_list;
    public List<Check> check_record_list;
    public List<Setting> class_setting_info;
    public String corpId;
    public String userid;
    public String work_date;
}

class Attendance{
    public String check_type;
    public long class_id;
    public long group_id;
    public String location_method;
    public String location_result;
    public String plan_check_time;
    public long plan_id;
    public long record_id;
    public String source_type;
    public String time_result;
    public String user_address;
    public String user_check_time;
    
}

class Check{
    public long record_id;
    public String source_type;
    public String user_check_time;
    public boolean valid_matched;
}

class Setting{
    public List<Rest> rest_time_vo_list;
}

class Rest{
    public long rest_begin_time;
    public long rest_end_time;
}

使用阿里巴巴FastJSON,想怎么转怎么转,跟springboot 没半毛钱关系