gpt4 book ai didi

json - 如何仅使用 jq 将嵌套的 JSON 转换为 CSV

转载 作者:行者123 更新时间:2023-12-02 09:18:29 27 4
gpt4 key购买 nike

我已经关注 json,

{
"A": {
"C": {
"D": "T1",
"E": 1
},
"F": {
"D": "T2",
"E": 2
}
},
"B": {
"C": {
"D": "T3",
"E": 3
}
}
}

我想把它转换成csv如下,

A,C,T1,1
A,F,T2,2
B,C,T3,3

输出描述: parent 的 key 将被打印,直到我到达叶子 child 。一旦到达叶子节点,打印它的值。

我试过关注,但未能成功,

cat my.json | jq -r '(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $rows[] | @csv'

它给我一个错误。

我不能硬编码父键,因为实际的 json 有太多记录。但是json的结构是相似的。我错过了什么?

最佳答案

有些需求不清楚,但是下面解决了一个解读问题:

paths as $path
| {path: $path, value: getpath($path)}
| select(.value|type == "object" )
| select( [.value[]][0] | type != "object")
| .path + ([.value[]])
| @csv

(这个程序可以优化,但这里的介绍是为了让各个步骤清楚。)

调用:

jq -r -f leaves-to-csv.jq input.json

输出:

"A","C","T1",1
"A","F","T2",2
"B","C","T3",3

不带引号的字符串

为避免字符串两边的引号,您可以将上面管道的最后一个组件替换为:

join(",")

关于json - 如何仅使用 jq 将嵌套的 JSON 转换为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44744381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com