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

使用jq将CSV转换为JSON未得预期输出,求解决方案

问题解决:CSV转JSON未得到键值对结构

你的问题出在提前对CSV行做了split处理,导致jq cookbook的脚本无法正确解析。

问题原因

你执行了:

jq -cR 'split(",")' foo.csv | jq -csf csv2json.jq

第一个jq命令已经把每行CSV拆成了数组,传给第二个jq的是一个二维数组(比如[["foo","bar","quux"],["1","2","3"],...]),但cookbook的脚本是针对原始CSV文本设计的,它的第一步是split("\n")来拆分行,现在接收到的是数组而非原始字符串,后续逻辑完全失效,所以输出还是二维数组。

正确做法

1. 确认csv2json.jq的内容

确保你的脚本是处理原始CSV文本的正确版本(额外加入数值转换逻辑,匹配你预期的数字输出):

split("\n") | .[:-1] | map(split(",")) |
    (.[0] | map(.)) as $headers |
    .[1:] | map(
        reduce range(0; $headers | length) as $i ({};
            .[$headers[$i]] = .[$i] | tonumber? // .[$i]
        )
    )

2. 执行正确的命令

直接用jq处理原始CSV文件,不需要提前split:

jq -Rsf csv2json.jq foo.csv

或者用管道传递原始文件内容:

cat foo.csv | jq -Rsf csv2json.jq

预期输出

执行后会得到你想要的键值对结构:

[{"foo":1,"bar":2,"quux":3},{"foo":4,"bar":5,"quux":6},{"foo":7,"bar":8,"quux":9}]

内容的提问来源于stack exchange,提问作者CodeBot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:41:10