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

如何将CURL返回的表格数据转为JSON数组?(PHP/CLI实现)

用sed预处理+工具链将curl返回的表格转JSON

第一步:sed预处理命令

先处理curl返回的原始数据,删掉开头的查询语句行,同时清理分隔符|前后的冗余空格,命令如下:

curl -d "sql query here" -X POST https://xxx/database_query | sed -e '1d' -e 's/ *| */|/g'
  • 1d:直接删除第一行(就是带> select的查询语句行)
  • s/ *| */|/g:把所有|前后的任意数量空格替换成单个|,让表头和数据列的分隔符更规整,方便后续处理。

第二步:配合awk+jq转成标准JSON

光sed只能做预处理,要生成JSON还得结合awk和jq(系统一般自带这两个工具),完整命令链如下:

curl -d "sql query here" -X POST https://xxx/database_query | 
sed -e '1d' -e 's/ *| */|/g' | 
awk -F'|' '
    BEGIN { print "[" }
    NR == 1 { 
        for (i=1; i<=NF; i++) headers[i] = $i; 
        next 
    }
    {
        printf "%s{", NR>2 ? "," : "";
        for (i=1; i<=NF; i++) {
            printf "\"%s\": \"%s\"%s", headers[i], $i, i<NF ? "," : "";
        }
        print "}"
    }
    END { print "]" }
' | jq .
  • awk负责把处理后的表格转成JSON结构:先读取表头作为键,再逐行把数据转成键值对对象,最后包裹成数组
  • jq负责格式化JSON输出,让结果更易读,同时验证JSON格式是否合法

可选:用csvkit简化转换(需额外安装)

如果你的系统能安装工具,用csvkit里的csvjson会更简单:

# 先安装csvkit:sudo apt install csvkit 或者 pip install csvkit
curl -d "sql query here" -X POST https://xxx/database_query | 
sed -e '1d' -e 's/ *| */,/g' | 
csvjson

sed把|换成逗号后就是标准CSV格式,csvjson直接一键转JSON,省心省力。

进阶:把数字字段转成数值类型

如果需要把HEIGHT、COIN_BALANCE这类数字字段从字符串转成JSON数值,可以在jq里加类型转换:

... | jq 'map(. |= {ID: .ID, HEIGHT: (.HEIGHT | tonumber), COIN_BALANCE: (.COIN_BALANCE | tonumber)})'

内容的提问来源于stack exchange,提问作者Patoshi パトシ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:39:47