You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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:00BOGOTAPAQUETE ENTREGADO AL DESTINATARIO
2024-05-21 08:30:00BOGOTAPAQUETE EN CENTRO DE DISTRIBUCION LOCAL
2024-05-20 16:45:00MEDELLINPAQUETE DESPACHADO HACIA EL DESTINO

小提示

  • 如果API的响应结构有变动,你需要调整JSON字段的提取路径(比如data、historial这些key)
  • 可以根据需求添加更多字段,比如包裹重量、配送方式,只要在JSON里找到对应的key就行
  • 注意不要频繁调用API,避免触发对方的反爬限制

内容的提问来源于stack exchange,提问作者Germán

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:30:10