簡體   English   中英

使用 jq 將 json 轉換為 csv

[英]Using jq to convert json to csv

我正在嘗試提出正確的 jq 語法來將 json 轉換為 csv。

預期結果:

<email>,<id>,<name>
e.g. 
user1@whatever.nevermind.no,0,general
user2@whatever.nevermind.no,0,general
user1@whatever.nevermind.no,1,local
...
  • 請注意,還需要忽略具有空“agent_priorities”的對象

輸入

[
  {
    "id": 0,
    "name": "General",
    "agent_priorities": {
      "user1@whatever.nevermind.no": "normal",
      "user2@whatever.nevermind.no": "normal"
    }
  },
  {
    "id": 1,
    "name": "local",
    "agent_priorities": {
      "user1@whatever.nevermind.no": "normal"
    }
  },
  {
    "id": 2,
    "name": "Engineering",
  }
]

將 id 和 name 存儲在變量中,然后遍歷agent_priorities的鍵:

jq -r '.[] 
       | .id as $id 
       | .name as $name 
       | .agent_priorities 
       | keys 
       | .[] 
       | [., $id, $name ] 
       | @csv
      ' file.json

接受的答案的以下變體根據要求檢查“agent_priorities”鍵的存在,並使用keys_unsorted保留鍵的順序:

jq -r '
       .[] 
       | select(has("agent_priorities"))
       | .id as $id 
       | .name as $name 
       | .agent_priorities 
       | keys_unsorted[]
       | [., $id, $name ] 
       | @csv
      ' file.json

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM