首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jq将JSON数组转换为CSV

使用jq将JSON数组转换为CSV
EN

Stack Overflow用户
提问于 2017-12-09 17:01:36
回答 3查看 7K关注 0票数 3

我有一个名为temp.json的JSON文件。

代码语言:javascript
复制
{
  "users": [
    {
      "username": "jack",
      "email": "jack@somewhere.com",
      "total running apps": "1",
      "api-mock-app": "0",
      "flogo": "1",
      "ipaas": "0",
      "nodejs-app": "0"
    },
    {
      "username": "jill",
      "email": "jill@somewhere.com",
      "total running apps": "1",
      "api-mock-app": "0",
      "flogo": "1",
      "ipaas": "0",
      "nodejs-app": "0"
    }
  ]
}

我想把这个JSON转换成CSV,

代码语言:javascript
复制
username email              total running apps api-mock-app flogo ipaas nodejs-app
jack     jack@somewhere.com 1                  0            1     0     0
jill     jill@somewhere.com 1                  0            1     0     0

我试过这个

代码语言:javascript
复制
jq -r '.users[] | keys[0] [.username, .email, ."total running apps", ."api-mock-app", .flogo, .ipaas, ."nodejs-app"] | join(", ") | @csv' temp.json`

但我错了

代码语言:javascript
复制
q: error (at temp.json:22): Cannot index string with string "jack"`

谁能解释我在哪里出了错,请告诉我正确的答案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-09 20:46:21

jq解决方案:

代码语言:javascript
复制
jq -r '(.users[0] | keys_unsorted), (.users[] | to_entries | map(.value))|@csv' temp.json

产出:

代码语言:javascript
复制
"username","email","total running apps","api-mock-app","flogo","ipaas","nodejs-app"
"jack","jack@somewhere.com","1","0","1","0","0"
"jill","jill@somewhere.com","1","0","1","0","0"
票数 7
EN

Stack Overflow用户

发布于 2019-12-10 07:53:27

我认为最简单的方法是

代码语言:javascript
复制
jq -r "(.users[0] | keys_unsorted),  (.users[] | map(.) | @csv)"
票数 1
EN

Stack Overflow用户

发布于 2017-12-09 18:33:40

我试过了,效果很好,

代码语言:javascript
复制
jq -r '(.users[0] | keys), (.users[] | [.username, .email, ."total running apps", ."api-mock-app", .flogo, .ipaas, ."nodejs-app"]) | @csv' temp.json

输出格式是。

代码语言:javascript
复制
"api-mock-app","email","flogo","ipaas","nodejs-app","total running apps","username"
"jack","jack@somewhere.com","1","0","1","0","0"
"jill","jill@somewhere.com","1","0","1","0","0"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47730946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档