0
我在Windows 64位機器上使用JQ 1.4。如何使用JQ 1.4將複雜的JSON轉換爲CSV
下面是輸入文件的內容IP.txt
{
"results": [
{
"name": "Google",
"employees": [
{
"name": "Michael",
"division": "Engineering"
},
{
"name": "Laura",
"division": "HR"
},
{
"name": "Elise",
"division": "Marketing"
}
]
},
{
"name": "Microsoft",
"employees": [
{
"name": "Brett",
"division": "Engineering"
},
{
"name": "David",
"division": "HR"
}
]
}
]
}
{
"results": [
{
"name": "Amazon",
"employees": [
{
"name": "Watson",
"division": "Marketing"
}
]
}
]
}
文件包含兩個"results"
。第一個結果包含2個公司的信息:Google
和Microsoft
。第二個結果包含Amazon
的信息。 我想將此JSON轉換爲公司名稱和員工姓名的csv文件。
"Google","Michael"
"Google","Laura"
"Google","Elise"
"Microsoft","Brett"
"Microsoft","David"
"Amazon","Watson"
我能寫腳本如下:
jq -r "[.results[0].name,.results[0].employees[0].name]|@csv" IP.txt
"Google","Michael"
"Amazon","Watson"
有人能指導我寫劇本沒有硬編碼的索引值?
腳本應該能夠產生任何數字results
和任何公司的每個cotaining信息的輸出。
我試着用下面的腳本並沒有產生預期的輸出:
jq -r "[.results[].name,.results[].employees[].name]|@csv" IP.txt
"Google","Microsoft","Michael","Laura","Elise","Brett","David"
"Amazon","Watson"
謝謝傑夫。這工作完美。你能告訴我在哪裏可以學習JQ以瞭解這個腳本的工作原理嗎?我通過JQ手冊。它有助於單個過濾器。我想學習如何將它們混合在一起,創造出魔幻般的解決方案。 – Swapnil
我可以給你的最好的建議是要知道所有可用的過濾器,並瞭解它們可以用於和使用它們。請注意過濾器產生的類型,無論是單個值(數字,對象,數組等)還是多個值(使用[])以及它們如何影響最終結果。功能性編程或其他聲明式編程風格的強大背景是一大優勢。只要玩它,它會在你身上成長。我剛剛在幾個月前就發現了這一點,但在那段時間內,我覺得我已經足夠了解所有事情。 –