SpringBoot 解析 HTTP 响应中的 JSON 数据:提取考勤记录列表

假设我们通过 HTTP 请求获取到了以下 JSON 数据,它包含了多条考勤记录:

{
  "code": 0,
  "msg": "",
  "data": {
    "next_id": 8,
    "data": [
      {
        "user_id": "6503776102009874",
        "ext_id": "8493138959115314",
        "terminal_id": "DL-D7_0000001",
        "check_type": "fp",
        "id": 5,
        "check_time": 1682326783,
        "check_data": '{"device_name":"人脸考勤机D7","employee_num":"","dept_name":"","cmd":"checkin","member_name":"沈平","dept_id":""}'
      },
      {
        "user_id": "4946919958189376",
        "ext_id": "7551770870492020",
        "terminal_id": "DL-D7_0000001",
        "check_type": "fa",
        "id": 6,
        "check_time": 1682327841,
        "check_data": '{"device_name":"人脸考勤机D7","employee_num":"","dept_name":"","cmd":"checkin","member_name":"戴敏","dept_id":""}'
      },
      {
        "user_id": "1765968750817174",
        "ext_id": "5541253548724128",
        "terminal_id": "DL-D7_0000001",
        "check_type": "fp",
        "id": 7,
        "check_time": 1682327537,
        "check_data": '{"device_name":"人脸考勤机D7","employee_num":"","dept_name":"","cmd":"checkin","member_name":"邱刚","dept_id":""}'
      }
    ]
  }
}

我们希望能够使用 SpringBoot 解析这个 JSON 数据,并将里面的 data 字段收集成一个 List 对象,方便后续处理。

可以使用 Spring 的 RestTemplate 来发送 HTTP 请求,并使用 Jackson 库来解析响应结果。

以下代码展示了如何使用 RestTemplate 和 Jackson 库解析 HTTP 响应结果,并将 data 字段收集成一个 List 对象:

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

import java.util.List;

public class AttendanceDataParser {

    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();
        String url = "http://example.com/api/attendance";
        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);

        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode rootNode = objectMapper.readTree(response.getBody());
        JsonNode dataArrayNode = rootNode.path("data").path("data");

        List<AttendanceRecord> attendanceList = objectMapper.readValue(dataArrayNode.toString(), new TypeReference<List<AttendanceRecord>>() {});

        // 处理 attendanceList
        for (AttendanceRecord record : attendanceList) {
            System.out.println(record.getUserId());
            System.out.println(record.getCheckType());
            System.out.println(record.getCheckData());
        }
    }
}

// 定义一个 Java 类来表示每条考勤记录
class AttendanceRecord {
    private String userId;
    private String extId;
    private String terminalId;
    private String checkType;
    private int id;
    private long checkTime;
    private String checkData;

    // getter 和 setter 方法
    // ...
}

在上面的代码中,我们首先使用 RestTemplate 发送 HTTP 请求,然后使用 ObjectMapper 将响应结果解析成 JsonNode 对象。接着,我们通过 path() 方法获取到 data 字段,并使用 TypeReference 将其解析成 List<AttendanceRecord> 对象。

AttendanceRecord 类是一个自定义的 Java 类,用于表示每一条考勤记录。可以根据实际需要来定义该类的字段。

最后,我们可以通过循环遍历 attendanceList 来获取每条考勤记录的信息。

通过以上方法,我们可以方便地使用 SpringBoot 解析 HTTP 响应中的 JSON 数据,并将其中的数据收集成一个 List 对象,方便后续处理。

SpringBoot 解析 HTTP 响应中的 JSON 数据:提取考勤记录列表

原文地址: https://www.cveoy.top/t/topic/nDQz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录