我有一個用于專案和任務的 JSON 結構:
{
"project1": [
"task1a",
"task1b"
],
"project2": [
"task2a",
"task2b",
"task2c"
]
}
我想將其轉換為類似 MD 的串列:
* project1
* task1a
* task1b
* project2
* task2a
* task2b
* task2c
主要使用jq和sh/bash
我能做的最好的是:
jq '. | to_entries | .[] | .value |= " * " join("\n * ") "\n" | .key = "* " .key'
但后來我被困在試圖正確列印.value字串.key
uj5u.com熱心網友回復:
另一個解決方案,沒有更新運算子|=,沒有join()內置和顯式換行符\n:
jq -r 'to_entries[] | "* \(.key)", " * \(.value[])"'
* project1
* task1a
* task1b
* project2
* task2a
* task2b
* task2c
演示
uj5u.com熱心網友回復:
另一個解決方案,使用join()和字串插值:
to_entries[] | "* \(.key)\n * \(.value | join("\n * "))"
將產生:
* project1
* task1a
* task1b
* project2
* task2a
* task2b
* task2c
jq -r 'to_entries[] | "* \(.key)\n * \(.value | join("\n * "))"' input
JqPlay 演示
uj5u.com熱心網友回復:
你很親近。添加-r到輸出原始字串而不是 JSON,并用于| .key, .value將鍵和值字串作為單獨的專案輸出,以便它們顯示在相鄰的行上。
jq -r '. | to_entries | .[] | .value |= " * " join("\n * ") | .key = "* " .key | .key, .value'
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/373050.html
