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

如何使用jq输出包含键名的us_rate对象?

用jq提取嵌套对象时保留键名的方法

嘿,我刚好知道怎么解决这个问题!你现在需要提取us_rate对象同时保留它的键名,对吧?咱们一步步来:

首先先确认你的原始JSON内容:

{
  "shipping": {
    "local": true,
    "us": true,
    "us_rate": {
      "amount": "0.00",
      "currency": "USD",
      "symbol": "$"
    }
  }
}

你之前用cat input.json | jq .shipping.us_rate只能得到us_rate对应的值,而要保留键名的完整结构,有两种简单好用的方法:

方法一:手动构造目标对象

利用jq的对象构造语法,直接指定要保留的键名,并把对应层级的值赋给它:

cat input.json | jq '{us_rate: .shipping.us_rate}'

执行这个命令后,就能得到你想要的输出:

{
  "us_rate": {
    "amount": "0.00",
    "currency": "USD",
    "symbol": "$"
  }
}

方法二:从父对象中直接选取指定键

如果你已经定位到shipping这个父对象层级,也可以直接选取里面的us_rate键,这样jq会自动保留键名:

cat input.json | jq '.shipping | {us_rate}'

这个方法和方法一的效果完全一致,好处是如果后续需要调整父层级的路径,修改起来会更灵活。

要是你遇到键名是动态的场景(比如需要通过变量指定要提取的键),还可以用这个进阶写法:

cat input.json | jq --arg key "us_rate" '.shipping | {($key): .[$key]}'

不过针对你当前的需求,前面两种基础方法就完全够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:10:26