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

如何用jq提取含百分号开头的JSON对象属性值?

如何用jq提取含特殊字符的JSON属性值?

假设test.json的内容如下:

{
  "system": {
    "power": 10.5,
    "%mem": 0.5,
    "%cpu": 12.4
  }
}

直接使用.system.%cpu这类点语法查询会触发语法错误,因为键名包含%特殊字符,但我们可以通过以下两种方式正确提取%mem和%cpu的值:

方法1:引号包裹键名的点语法

对于含特殊字符的键,在点语法中给键名加上双引号即可:

  • 提取单个属性:
# 提取%cpu的值
jq '.system."%cpu"' test.json
# 提取%mem的值
jq '.system."%mem"' test.json
  • 一次性提取多个属性:
jq '.system | ."%mem", ."%cpu"' test.json

输出结果会分行显示0.5和12.4;如果需要数组格式结果,可改用:

jq '.system | ["%mem", "%cpu"] | map(.[.])' test.json

输出:[0.5,12.4]

方法2:方括号索引语法

用方括号包裹带引号的键名,也是jq识别特殊字符键的标准方式:

  • 提取单个属性:
# 提取%cpu的值
jq '.system["%cpu"]' test.json
# 提取%mem的值
jq '.system["%mem"]' test.json
  • 一次性提取多个属性:
jq '.system["%mem", "%cpu"]' test.json

这两种方式都能兼容JSON规范中含特殊字符的合法键,解决点语法无法识别的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:40:17