如何选择键值长度超过数字的jq项

Jim*_*Jim 2 select json jq

我有这个 JSON 输入到 JQjq

{
  "names": [{
    "name": "John Smith"
  },{
    "name": "Jane Doe"
  },{
    "name": "Jackson Longfellow"
  }]
}
Run Code Online (Sandbox Code Playgroud)

我想使用 jq 选择名称长度> 10 个字符的所有项目。这意味着输出将是:

{
  "names": [{
    "name": "Jackson Longfellow"
  }]
}
Run Code Online (Sandbox Code Playgroud)

过滤length器似乎只计算数组中的项目。是否有其他内置过滤器可用于此目的?

pmf*_*pmf 6

通过仅更新那些匹配的项目来更新|=数组。应用于字符串将输出其长度(计算 Unicode 代码点)。namesselectlength

jq '.names |= map(select(.name | length > 10))'
Run Code Online (Sandbox Code Playgroud)
{
  "names": [
    {
      "name": "Jackson Longfellow"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

演示