json - jq 哈希数组到 csv

标签 json linux csv jq

所以我有这样一个数据源:

{
  "things": [
    {
      "thing_name": "Bestco",
      "thing_id": 1
    },
    {
      "thing_name": "GreatCo",
      "thing_id": 2
    },
    {
      "thing_name": "DressCo",
      "thing_id": 3
    }
  ]
}

我想得到这样的输出:

$ echo '{"things":[{"thing_name":"Bestco","thing_id":1},{"thing_name":"GreatCo","thing_id":2},{"thing_name":"DressCo","thing_id":3}]}' |
  jq -r '.things | map(.thing_name, .thing_id, "\n") | @csv' |
  sed -e 's/,"$//g' -e 's/^",//g' -e 's/^"$//g'
"Bestco",1
"GreatCo",2
"DressCo",3

$ 

使用假参数似乎是一种 hack,然后需要通过 sed 清理才能工作。我如何仅使用 jq 来执行此操作。

最佳答案

与其尝试在数据中放入文字换行符,不如将数据拆分为单独的数组(每行一个所需输出),并将每个数组传递给 @csv

s='{"things":[{"thing_name":"Bestco","thing_id":1},{"thing_name":"GreatCo","thing_id":2},{"thing_name":"DressCo","thing_id":3}]}'

jq -r '.things[] | [.thing_name, .thing_id] | @csv' <<<"$s"

...正确发出:

"Bestco",1
"GreatCo",2
"DressCo",3

关于json - jq 哈希数组到 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51127531/

相关文章:

python - 打印 csv 列中最旧和最新的日期 - 按日期对 csv 进行排序

csv - 加载 tempView 时,空字符串显示为 null

javascript - 如何在 JavaScript 中解析 JSON 字符串?

linux - 在命令行中将参数传递给 ksh 脚本时转义反引号 - grave(`)

linux - 我如何 grep 使用 STDIN 作为查询模式,并使用文件作为主题?

javascript - 将对象的属性转换为逗号分隔的列表?

php - 如何将 JSON 数据从 Android 发送到 php url?

python - 带有缩进的 Pyspark 文本文件 json

android - 如何写入存储在 Assets 文件夹中的 json 文件?

linux - 查看服务是否正在使用退出代码运行