我有一个名为temp.json的JSON文件。
{
"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,
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我试过这个
jq -r '.users[] | keys[0] [.username, .email, ."total running apps", ."api-mock-app", .flogo, .ipaas, ."nodejs-app"] | join(", ") | @csv' temp.json`但我错了
q: error (at temp.json:22): Cannot index string with string "jack"`谁能解释我在哪里出了错,请告诉我正确的答案。
发布于 2017-12-09 20:46:21
jq解决方案:
jq -r '(.users[0] | keys_unsorted), (.users[] | to_entries | map(.value))|@csv' temp.json产出:
"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"发布于 2019-12-10 07:53:27
我认为最简单的方法是
jq -r "(.users[0] | keys_unsorted), (.users[] | map(.) | @csv)"发布于 2017-12-09 18:33:40
我试过了,效果很好,
jq -r '(.users[0] | keys), (.users[] | [.username, .email, ."total running apps", ."api-mock-app", .flogo, .ipaas, ."nodejs-app"]) | @csv' temp.json输出格式是。
"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"https://stackoverflow.com/questions/47730946
复制相似问题