SpringBoot 解析 HTTP 响应中的 JSON 数据:提取考勤记录列表
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 对象,方便后续处理。
原文地址: https://www.cveoy.top/t/topic/nDQz 著作权归作者所有。请勿转载和采集!