[英]Return empty string or 0 (zero) in case of missing key with jq
我將json轉換為csv時遇到問題。
我有這種結構的json文件:
{
"key": [
{
"key1": 1,
"key2": 1,
"key3": {
"1": 1,
"2": 2,
"3": 3,
"4": 4
}
},
{
"key1": 2,
"key2": 2,
"key3": {
"2": 2
}
}
...
],
...
}
我正在使用此jq調用將json轉換為csv:
bin\jq-win64 ".key[] | [.key1, .key2, .key3.\"1\", .key3.\"2\", .key3.\"3\", .key3.\"4\" ] | tostring] | join(\";\")" source.json > output.tmp
我不能使用標准@csv
,因為它對我的語言環境設置@csv
。 但是回到問題。 在某些情況下, key3
可能不是完整的4元素對象(就像示例中那樣,4是鍵1/2/3/4的最大值)。 我對那些丟失的子項有問題,因為jq返回“ null”,並且不適用於excel或calc中的CSV評估。 在這種情況下,是否有辦法強制將空字符串或數字0輸出?
最后,我可以嘗試使用其他命令行文本處理器,但是如果我可以使用單個工具完成該操作,我將感到非常高興。
編輯:我有一個錯誤的json結構示例,現在實際的問題已經改變了一點。 消息已更新。
您可以通過添加來調整管道
map(. // 0)
在形成數組之后。 如果要保留false
,則必須添加
map(if . == null then 0 else . end)
代替。
如果您想要一個與鍵名無關的解決方案,則可以使用以下方法:
def resize($n): [range(0;$n) as $i | .[$i] // 0];
這將截斷或擴展輸入數組。 如果您不想截斷,請相應地進行調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.