代码之家  ›  专栏  ›  技术社区  ›  Fravadona

如何使用jq从包含键/值对的TSV文件中创建JSON对象

jq
  •  0
  • Fravadona  · 技术社区  · 3 年前

    我有一个输出键/值对的短TSV流,我想用它创建一个JSON对象 jq

    现在我有了这段代码,它生成了一堆JSON对象:

    printf '%s\t%s\n' key1 val1 key2 val2 |
    
    jq -R 'rtrimstr("\n") | split("\t") | { (.[0]): .[1] }'
    
    {
      "key1": "val1"
    }
    {
      "key2": "val2"
    }
    

    我可以把它传给 jq -s 'add' 为了获得我的预期输出:

    {
      "key1": "val1",
      "key2": "val2"
    }
    

    仅有一个的 jq公司

    1 回复  |  直到 3 年前
        1
  •  1
  •   pmf    3 年前

    使用 -n inputs

    例如使用 reduce :

    jq -Rn 'reduce (inputs/"\t") as [$k,$v] ({}; .[$k] = $v)'
    

    或使用 from_entries

    jq -Rn '[inputs/"\t" | {key: .[0], value: .[1]}] | from_entries'