반응형
CSV로 변환할 수 있도록 개체를 어레이에 매핑하려면 어떻게 해야 합니까?
다음과 같은 개체를 변환하려고 합니다.
{
"123" : "abc",
"231" : "dbh",
"452" : "xyz"
}
다음과 같은 csv:
"123","abc"
"231","dbh"
"452","xyz"
명령줄 도구 jq를 사용하고 싶은데 할당 방법을 알 수 없는 것 같습니다.나는 그럭저럭 열쇠를 손에 넣었다jq '. | keys' test.json
다음에 뭘 해야 할지 모르겠더라고요
문제는 이러한 k:v 개체를 csv로 직접 변환할 수 없다는 것입니다.@csv
어레이여야 하므로 먼저 어레이로 변환해야 합니다.키 이름을 붙이면 간단하지만 역동적이기 때문에 그리 쉽지는 않습니다.
다음 필터를 사용해 보십시오.
to_entries[] | [.key, .value]
to_entries
는 객체를 키/값 객체의 배열로 변환합니다.[]
어레이의 각 항목으로 어레이를 분할합니다.- 각 항목에 대해 키와 값을 포함하는 배열에 숨겨집니다.
이것에 의해, 다음의 출력이 생성됩니다.
[
"123",
"abc"
],
[
"231",
"dbh"
],
[
"452",
"xyz"
]
그 후 를 사용할 수 있습니다.@csv
행을 CSV 행으로 변환하려면 filter를 사용합니다.
$ echo '{"123":"abc","231":"dbh","452":"xyz"}' | jq -r 'to_entries[] | [.key, .value] | @csv'
"123","abc"
"231","dbh"
"452","xyz"
Jeff의 답변은 좋은 출발점이며, 예상에 가까운 것입니다.
cat input.json | jq 'to_entries | map([.key, .value]|join(","))'
[
"123,abc",
"231,dbh",
"452,xyz"
]
그러나 newline을 사용하여 가입하는 방법을 찾지 못했습니다.
cat input.json | jq 'to_entries | map([.key, .value]|join(","))|join("\n")'
"123,abc\n231,dbh\n452,xyz"
오늘 아침에 사용한 예를 다음에 나타냅니다(PagerDuty 경보 처리).
cat /tmp/summary.json | jq -r '
.incidents
| map({desc: .trigger_summary_data.description, id:.id})
| group_by(.desc)
| map(length as $len
| {desc:.[0].desc, length: $len})
| sort_by(.length)
| map([.desc, .length] | @csv)
| join("\n") '
그러면 다음과 같은 CVS 구분 문서가 덤프됩니다. "[Triggered] Something annoyingly frequent",31 "[Triggered] Even more frequent alert!",35 "[No data] Stats Server is probably acting up",55
사용해보십시오. 원하는 출력을 제공합니다.
echo '{"123":"abc","231":"dbh","452":"xyz"}' | jq -r 'to_entries | .[] | "\"" + .key + "\",\"" + (.value | tostring)+ "\""'
onecol2txt () {
awk 'BEGIN { RS="_end_"; FS="\n"}
{ for (i=2; i <= NF; i++){
printf "%s ",$i
}
printf "\n"
}'
}
cat jsonfile | jq -r -c '....,"_end_"' | onecol2txt
언급URL : https://stackoverflow.com/questions/20181467/how-to-map-an-object-to-arrays-so-it-can-be-converted-to-csv
반응형
'programing' 카테고리의 다른 글
로컬 패키지json은 있지만 node_module이 없습니다. (0) | 2023.03.17 |
---|---|
AngularJS: 특정 값이 없는 옵션을 필터링합니다. (0) | 2023.03.17 |
Amazon S3 버킷에서 Content-Disposition 헤더를 기본값으로 설정하는 방법 (0) | 2023.03.17 |
jeast.config.js와 create-react-app을 사용하는 방법 (0) | 2023.03.17 |
Python에서 JSON을 SQLite로 변환 - json 키를 데이터베이스 열에 올바르게 매핑하는 방법 (0) | 2023.03.17 |