Json
使用 jq 獲取結構化輸出
我有以下 json 作為 jq 處理的輸入
[ { "Category": "Disk Partition Details", "Filesystem": "udev", "Size": "3.9G", "Used": 0, "Avail": "3.9G", "Use%": "0%", "Mounted": "/dev" }, { "Category": "Disk Partition Details", "Filesystem": "tmpfs", "Size": "799M", "Used": "34M", "Avail": "766M", "Use%": "5%", "Mounted": "/run" } ]
按照@peak here
./csvtojson.sh bb.csv | jq 'map( {(.Category): del(.Category)})'
的建議使用 ,我已經達到了下面的json[ { "Disk Partition Details": { "Filesystem": "udev", "Size": "3.9G", "Used": 0, "Avail": "3.9G", "Use%": "0%", "Mounted": "/dev" } }, { "Disk Partition Details": { "Filesystem": "tmpfs", "Size": "799M", "Used": "34M", "Avail": "766M", "Use%": "5%", "Mounted": "/run" } } ]
我想要的只是將類別放在頂部一次,然後像我在上一步中所做的那樣將這個 json 分解到另一個級別。
[ { "Disk Partition Details": { "udev" :{ "Size": "3.9G", "Used": 0, "Avail": "3.9G", "Use%": "0%", "Mounted": "/dev" }, "tmpfs" : { "Size": "799M", "Used": "34M", "Avail": "766M", "Use%": "5%", "Mounted": "/run" } } } ]
完整的**
jq
**解決方案:jq '[ group_by(.Category)[0] | .[0].Category as $k | { ($k): (reduce .[] as $o ({}; .[($o.Filesystem)] = ($o | del($o.Category, $o.Filesystem))) ) } ]' input.json
如果
"Filesystem"
鍵可能是數字 - 更改.[($o.Filesystem)]
為以下.[($o.Filesystem | tostring)]
輸出:
[ { "Disk Partition Details": { "udev": { "Size": "3.9G", "Used": 0, "Avail": "3.9G", "Use%": "0%", "Mounted": "/dev" }, "tmpfs": { "Size": "799M", "Used": "34M", "Avail": "766M", "Use%": "5%", "Mounted": "/run" } } } ]