如何将 cURL 返回的竖线分隔表格数据转换为结构化 JSON 数组

秋宇姑娘_9318

秋宇姑娘_9318

2026-09-03

669人浏览

原创

如何将 cURL 返回的竖线分隔表格数据转换为结构化 JSON 数组

本文介绍如何将 cURL 请求返回的以 | 分隔、含查询头和表头的文本表格数据,通过 PHP 脚本高效清洗并转换为标准 JSON 数组,支持字段自动映射与空行容错。

本文介绍如何将 curl 请求返回的以 `|` 分隔、含查询头和表头的文本表格数据,通过 php 脚本高效清洗并转换为标准 json 数组,支持字段自动映射与空行容错。

在实际开发中,我们常通过 cURL 向数据库查询服务(如 RESTful SQL 接口)提交查询,但响应往往以人类可读的表格形式返回——首行为原始 SQL 语句,次行为字段名(用 `|` 分隔),后续为数据行。这种格式虽便于调试,却无法直接被前端或下游服务消费。本文提供一个健壮、可复用的 PHP 解析方案,将此类输出精准转换为符合 RFC 8259 的 JSON 数组。

核心处理逻辑分为四步:

  1. 按行分割:使用 explode("\n", $raw) 将原始响应切分为行数组;
  2. 跳过元信息array_shift() 移除首行(SQL 查询语句);
  3. 提取字段名:对第二行调用 explode('|', ...) 并配合 array_map('trim', ...) 清理首尾空格,得到键名数组;
  4. 逐行构建对象:遍历剩余数据行,每行同样按 | 拆分、trim 后,用 array_combine($fieldnames, $values) 映射为关联数组,最终 json_encode(..., JSON_PRETTY_PRINT) 输出格式化 JSON。

以下是完整可运行示例(兼容 PHP 7.4+):

<?php // 模拟 cURL 响应(实际中替换为 shell_exec("curl -d '...' -X POST https://..."))
$rawOutput = <<<'EOT'
> select ID, HEIGHT, COIN_BALANCE from account order by balance desc limit 20
ID                   | HEIGHT  | COIN_BALANCE
-7700097703553861699 | 1815934 | 299014795
-354651164223319404  | 1789433 | 150010434
514812057486191450   | 1815934 | 150000409
2819400133805325807  | 1789617 | 150000289
2045072049257519302  | 0       | 150000000
2825154884517497903  | 0       | 17904059
EOT;

// 【关键处理】
$lines = array_filter(array_map('trim', explode("\n", $rawOutput)), 'strlen'); // 过滤空行
if (count($lines) ' 开头)
$headers = array_map('trim', explode('|', array_shift($lines))); // 提取并清理字段名

$result = [];
foreach ($lines as $line) {
    if (empty(trim($line))) continue;
    $cells = array_map('trim', explode('|', $line));
    // 安全校验:确保字段数匹配,避免 array_combine 报错
    if (count($cells) !== count($headers)) {
        error_log("Warning: Row field count mismatch (expected " . count($headers) . ", got " . count($cells) . ") — skipping: {$line}");
        continue;
    }
    $result[] = array_combine($headers, $cells);
}

// 输出标准 JSON(生产环境建议移除 JSON_PRETTY_PRINT 以减小体积)
header('Content-Type: application/json; charset=utf-8');
echo json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

⚠️ 注意事项

Leaf Curling & Margin Scorch Diagnosis | 植物卷叶/焦边识别(干旱/病害)
Leaf Curling & Margin Scorch Diagnosis | 植物卷叶/焦边识别(干旱/病害)

利用农业相机拍摄植物叶片高分辨率图像,通过AI视觉技术检测叶片卷曲方向(向上卷曲或向下卷曲)

下载
  • 若需在 Shell 中直接处理,可组合 curl | sed '1d' | sed '1d' | awk -F'|' '{print $1,$2,$3}' | jq 等命令,但 PHP 方案更易维护、容错性强;
  • 实际调用时,务必对 shell_exec()proc_open() 的 cURL 结果做 escapeshellarg() 防注入,并设置超时与错误处理;
  • 字段名含空格或特殊字符时,服务端应确保其在 | 分隔中保持一致性(本方案依赖严格分隔);
  • 如需类型转换(如 "HEIGHT": "1815934""HEIGHT": 1815934),可在 array_combine 后添加 filter_var($val, FILTER_VALIDATE_INT) 等逻辑。

该方法已在高并发日志分析与数据库代理服务中稳定使用,兼顾简洁性与鲁棒性,是处理类 CLI 表格响应的推荐实践。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

1935

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

2542

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

876

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

2819

7

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

2023.06.14

3303

6

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

2023.10.30

695

4

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

2026.09.20

0

13

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

2026.09.20

0

15

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

160

9

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 20.4万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.7万人学习