You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jq中管道符后. +的含义及示例代码| . + {Title:...}解析

jq中管道符后点号(.)与加号(+)的含义及示例解析

1. 管道符(|)后的点号(.)

在jq中,管道符|负责将前一段表达式的输出,作为后一段表达式的输入。而单独的.就是当前输入对象的直接引用——说白了,它代表着刚从管道传过来的那坨JSON数据,让你能基于这个数据继续做后续操作。

比如写some_filter | .,就是把some_filter处理后的原对象原封不动传递下去,实际场景里不会单独这么写,但它是所有后续操作的基础载体。

2. 加号(+)的含义

jq里的+是对象合并操作符,用来把两个JSON对象合并成一个新对象:

  • 若两个对象存在重复键,右边对象的键值会覆盖左边的
  • 若键不重复,两边的键值对会全部保留在新对象中

3. 示例代码| . + {Title: $departments[.Code].Title}的具体作用

拆分来看这段代码的逻辑:

  1. |:把前面操作得到的某个JSON对象(比如一条包含Code字段的部门数据)传递到后续表达式
  2. .:代表这个刚传过来的JSON对象(比如假设它是{"Code": "HR", "ID": 1})
  3. +:将当前对象,和后面生成的新对象合并
  4. {Title: $departments[.Code].Title}:这里的.在新对象的上下文里,引用当前输入对象的Code值(也就是"HR"),然后从预先定义的变量$departments(比如它是{"HR": {"Title": "人力资源部"}, "IT": {"Title": "信息技术部"}})中,取出对应Code的Title值,生成新的{"Title": "人力资源部"}对象

最终这段代码的效果是:给原来的JSON对象新增一个Title字段,字段值来自$departments中对应Code的标题;如果原对象已有Title字段,会被新值覆盖。

比如原对象是{"Code": "HR", "ID": 1},执行这段代码后会变成{"Code": "HR", "ID": 1, "Title": "人力资源部"}

内容的提问来源于stack exchange,提问作者BrianEbrahimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:08:13