首页 > 解决方案 > jq:我可以在代码本身中使用参数的名称吗?

问题描述

有没有办法在代码中使用参数的名称?

例如,这个命令:

jq -n --arg name value '{($name): $name}'

有这个输出:

{
  "value": "value"
}

是否有可能获得此输出?:

{
  "name": "value"
}

标签: jq

解决方案


如果您删除($name):JQ 将使用该名称作为键后备:

$ jq -n --arg name value '{$name}'
{
  "name": "value"
}
$

来自 常见问题
版本之间的显着差异

{$x}: 介绍的缩写是哪个版本的{"x": $x}

1.5


对象构造{}文档

该值可以是任何表达式(尽管您可能需要将其括在括号中,例如,如果它包含冒号),它将应用于{}表达式的输入(请记住,所有过滤器都有一个输入和一个输出)。

{foo: .bar}

{"foo": 42}如果将 JSON 对象{"bar":42, "baz":43}作为其输入,将生成 JSON 对象。您可以使用它来选择对象的特定字段:如果输入是具有“user”、“title”、“id”和“content”字段的对象,而您只需要“user”和“title”,则可以写

{user: .user, title: .title}

因为这很常见,所以有一个快捷语法

{user, title}

推荐阅读