如何在Java中使用Jsoup分割字符串并填充表格
解析Servientrega快递数据生成Markdown表格
没问题,咱们一步步来搞定这个需求。你当前的Jsoup代码能从Servientrega的追踪API拿到原始JSON响应,但直接打印document.text()只能看到一串杂乱的JSON字符串。要把这些信息整理成清晰的表格,得先解析JSON提取关键字段,再构建Markdown表格。
第一步:添加JSON解析依赖
如果用Maven管理项目,先添加org.json依赖来解析JSON:
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20240303</version> </dependency>
第二步:修改代码解析JSON并输出表格
把你的代码改成下面这样,它会自动解析JSON里的快递基础信息和物流轨迹,然后输出Markdown格式的表格:
import org.json.JSONArray; import org.json.JSONObject; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class ServientregaTrackingParser { public static void main(String[] args) { try { // 调用API获取JSON响应 Document document = Jsoup.connect("https://web.servientrega.com/PortalServientrega/WebServicePortal/tracking/api/envio/2003159943/1/es") .validateTLSCertificates(false) .ignoreContentType(true) .get(); // 解析JSON字符串 JSONObject fullResponse = new JSONObject(document.text()); JSONObject shipmentInfo = fullResponse.getJSONObject("data"); JSONArray trackingHistory = shipmentInfo.getJSONArray("historial"); // 输出快递基础信息表格 System.out.println("### 快递基础信息"); System.out.println("| 字段名称 | 内容 |"); System.out.println("|----------|------|"); System.out.println("| 快递单号 | " + shipmentInfo.getString("numeroGuia") + " |"); System.out.println("| 当前状态 | " + shipmentInfo.getString("estadoEnvio") + " |"); System.out.println("| 发件人 | " + shipmentInfo.getString("nombreRemitente") + " |"); System.out.println("| 收件人 | " + shipmentInfo.getString("nombreDestinatario") + " |"); // 输出物流轨迹表格 System.out.println("\n### 物流追踪轨迹"); System.out.println("| 日期时间 | 城市 | 事件描述 |"); System.out.println("|----------|------|----------|"); for (int i = 0; i < trackingHistory.length(); i++) { JSONObject event = trackingHistory.getJSONObject(i); String dateTime = event.getString("fecha"); String city = event.getString("ciudad"); String description = event.getString("descripcion"); System.out.println("| " + dateTime + " | " + city + " | " + description + " |"); } } catch (Exception e) { e.printStackTrace(); } } }
最终生成的Markdown表格效果
运行代码后,你会得到类似这样的格式化表格:
快递基础信息
| 字段名称 | 内容 |
|---|---|
| 快递单号 | 2003159943 |
| 当前状态 | ENTREGADO |
| 发件人 | EMPRESA EJEMPLO LTDA |
| 收件人 | JUAN PEREZ |
物流追踪轨迹
| 日期时间 | 城市 | 事件描述 |
|---|---|---|
| 2024-05-22 10:15:00 | BOGOTA | PAQUETE ENTREGADO AL DESTINATARIO |
| 2024-05-21 08:30:00 | BOGOTA | PAQUETE EN CENTRO DE DISTRIBUCION LOCAL |
| 2024-05-20 16:45:00 | MEDELLIN | PAQUETE DESPACHADO HACIA EL DESTINO |
小提示
- 如果API的响应结构有变动,你需要调整JSON字段的提取路径(比如
data、historial这些key) - 可以根据需求添加更多字段,比如包裹重量、配送方式,只要在JSON里找到对应的key就行
- 注意不要频繁调用API,避免触发对方的反爬限制
内容的提问来源于stack exchange,提问作者Germán
相关产品推荐
相关产品推荐

