我想使用 Jq 将文本文件数据转换为 JSON

cap*_*ked 3 bash shell scripting json jq

我的文件中的日期看起来像

test,test
test1,test1
Run Code Online (Sandbox Code Playgroud)

我想把它转换成这样:

{"test":"test","test1":"test1"}
Run Code Online (Sandbox Code Playgroud)

我为此目的尝试过 jqjq -R -s -c 'split("\n")'

但它的格式["test,test","test1,test1",""]

pea*_*eak 7

jq 1.5有inputs,它允许一个简单而有效的解决方案:

 jq -R -n -c '[inputs|split(",")|{(.[0]):.[1]}] | add' input.txt
Run Code Online (Sandbox Code Playgroud)

重要提示:不要忘记-n( --null-input) 选项,否则您将丢失第一行。

选择

如果您的 jq 没有inputs,那么是时候升级了(如果可能的话)。否则:

jq -R -s '
  split("\n")
  | map(if index(",") then split(",")|{(.[0]):.[1]}
        else empty end)
  | add' input.txt
Run Code Online (Sandbox Code Playgroud)