使用jq将JSON转换为CSV [英] Convert a JSON into CSV using jq

查看:162
本文介绍了使用jq将JSON转换为CSV的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个json文件,该文件存储在环境变量temp中.

I have a json file, which is stored in an environment variable temp.

{ "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

{ "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" } ] } When i am converting this JSON into CSV using this command

jq -r '.users[] | [.username, .email, .total running apps, .api-mock-app, .flogo, .ipaas, .nodejs-app] | @csv' <<< $temp

我遇到以下错误.

jq:错误:语法错误,第1行的意外IDENT(Unix shell引用问题?): .users [] | [.username,.email,.total运行的应用程序,.api-mock-app,.flogo,.ipaas,.nodejs-app] | @csv
jq:1个编译错误

jq: error: syntax error, unexpected IDENT (Unix shell quoting issues?) at , line 1: .users[] | [.username, .email, .total running apps, .api-mock-app, .flogo, .ipaas, .nodejs-app] | @csv
jq: 1 compile error

有什么需要吗?

推荐答案

您需要引用您的列名,特别是因为它们包含空格和破折号.但是,您需要转义bash的引号:

You need to quote your column names, especially since they contain spaces and dashes. However you need to escape the quotes for bash:

jq --raw-output '.users[] | [.username, .email, ."total running apps", ."api-mock-app", ."flogo", ."ipaas", ."nodejs-app"] | @csv'

这篇关于使用jq将JSON转换为CSV的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆