给定输入{ "type": "dropdown"}
,我想将类型转换为select
,基于以下类型映射,可能在jq中做到这一点?由于
{
"radiogroup": "radio",
"checkbox": "checkbox",
"dropdown": "select",
"text": "text",
"rating": "rate",
"boolean": "switch",
"comment": "textarea"
}
PS:查看https://jqplay.org/s/BQo197AF7Q查看使用查找表方法的演示。
先将查找对象赋值给一个变量:
{ "radiogroup": "radio", "checkbox": "checkbox", "dropdown": "select", "text": "text", "rating": "rate", "boolean": "switch", "comment": "textarea" }
as $lookup | $lookup[.type]
如果input
和map
对象都在单独的文件中,我们可以使用Botje的解决方案的替代方案,即使用-s
(slurp)选项将两个对象读入单个数组。
那么我们可以
jq -s '.[1].type = .[0][.[1].type] | last' map input
- 将
.type
(第二个索引)更改为第一个索引的映射值.[1].type = .[0][.[1].type]
- 只输出第二个对象
| last
这将产生
{
"type": "select"
}
本地机器的示例:
$ jq . map
{
"radiogroup": "radio",
"checkbox": "checkbox",
"dropdown": "select",
"text": "text",
"rating": "rate",
"boolean": "switch",
"comment": "textarea"
}
$ jq . input
{
"type": "dropdown"
}
$
$ jq -s '.[1].type = .[0][.[1].type] | last' map input
{
"type": "select"
}
$