簡體   English   中英

使用jq解析json輸出

[英]Parse json output using jq

首先,非常感謝您的支持。

我無法將json輸出解析為csv格式。 我能夠得到某種輸出,但是不符合預期。

卷曲命令輸出

{
    "results": [{
            "name": "smith Jones",
            "DOB": "1992-03-26",
            "Enrollmentdate": "2013-08-24"

        },

        {
            "name": "Jacob Mathew",
            "DOB": "1993-03-26",
            "Enrollmentdate": "2014-10-02"
        },

        {
            "name": "Anita Rodrigues",
            "DOB": "1994-03-26",
            "Enrollmentdate": "2015-02-19"
        }
    ]
}

JQ commond二手

<curl-command>|jq '.results | map(.name), map(.DOB), map(.Enrollmentdate) | @csv' >file.csv

我的輸出

smith jones, Jacob Mathew, Anita Rodrigues
1992-03-26, 1993-03-26, 1994-03-26
2013-08-24, 2014-10-02, 2015-02-19 

這可能不完全是csv,但低於預期的輸出。

Name                 DOB             Enrollmentdate
smith jones,       1992-03-26,        2013-08-24
jacob Mathew,      1993-03-26,        2014-10-02
Anitha Rodrigues,  1994-03-26,        2015-02-19

使用示例JSON,調用:

jq -r '
  .results[]
  | [.name, .DOB, .Enrollmentdate ]
  | @csv'

產生:

"smith Jones","1992-03-26","2013-08-24"
"Jacob Mathew","1993-03-26","2014-10-02"
"Anita Rodrigues","1994-03-26","2015-02-19"

如果您不想(在這種情況下)多余的引號,可以用join(",")替換@csv join(",")但是最好編寫一個簡單的過濾器來處理逗號等值。

標頭

如果第一個結果的鍵順序正確,則可以避免:

  (.results[0] | keys_unsorted),
  (.results[]
  | [.name, .DOB, .Enrollmentdate ])
  | @csv

但是,按照以下方式使用jq魔術可能會更好:

  (.results[0] | keys_unsorted) as $headers
  | $headers,
    (.results[]
     | [getpath($headers[]|[.])])
  | @csv

暫無
暫無

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

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