首页 > 解决方案 > 使用 jq 创建 JSON 对象/字典

问题描述

在我的 bash 脚本中,我有一个字典/地图,例如:

k1: v1
k2: v2
k3: v3

我可以像这样使用jq --slurpjq --raw-input实际将其转换为 JSON:

{
  "k1": "v1",
  "k2": "v2",
  "k3": "v3"
}

可能通过管道类似:echo k1 v1 k2 v2 k3 v3 | jq [???]

标签: jsondictionaryjq

解决方案


使用key: valueinput.txt 中的数据,以及 tojson.jq 中的以下程序:

[inputs | select(length>0) 
 | [splits(": *")]
 | {(.[0]): .[1]} ]
| add

调用:

jq -n -R -f tojson.jq input.txt

产生:

{
  "k1": "v1",
  "k2": "v2",
  "k3": "v3"
}

推荐阅读