簡體   English   中英

如果缺少jq鍵,則返回空字符串或0(零)

[英]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.

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