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

使用jq无法选择以数字开头的字段,求可行解决方案

解决jq无法选择以数字开头字段的问题

这个问题其实是jq的标识符规则导致的——jq里直接用.字段名的语法只支持符合标识符规范的字段名(不能以数字开头),所以像你数据里的90line、95line这类字段,直接写.90line肯定会报错。

下面给你两种通用的解决方法,在jqplay里也能直接生效:

方法1:用引号包裹字段名访问

把数字开头的字段名用双引号包起来,配合.或者方括号语法就能正常访问:

比如要提取result数组中每个对象的90line字段,可以写:

.result[]."90line"

或者用方括号的写法(效果完全一样):

.result[]|["90line"]

如果要同时提取多个字段(包括正常命名和数字开头的),可以这样组合:

.result[] | {labelName, "90line", "95line", "99line"}

运行后会输出每个对象对应的labelName和三个百分位响应时间字段。

方法2:批量筛选数字开头的字段

如果需要一次性提取所有以数字开头的字段,可以结合with_entries和正则筛选:

.result[] | with_entries(select(.key | test("^\\d")))

这个命令会把每个result对象里所有以数字开头的键值对单独筛选出来,不用一个个指定字段名。

关于你提到的部分方案在jqplay不生效的说明

有些旧的issue方案可能依赖特定版本的jq特性,jqplay里的jq版本如果偏旧可能不支持。但上面两种方法是jq的基础语法,几乎所有版本都兼容,你可以直接在jqplay里测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:37:11