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

jq提取嵌套数组对象内字符串时重写过滤器报错如何解决

jq过滤器报错原因与修正方案

原始运行情况

原始过滤器

( ._birthDate.extension[0] | .url, ( .extension[0] | .url, .valueString ), ( .extension[1] | .url, .valueString ) )

输入JSON

{
   "_birthDate":{
      "extension":[
         {
            "url":"http://catsalut.gencat.cat/fhir/StructureDefinition/patient-dataBirhtDeath",
            "extension":[
               {
                  "url":"country",
                  "valueString":"724"
               },
               {
                  "url":"state",
                  "valueString":"08"
               }
            ]
         }
      ]
   }
}

预期输出

"http://catsalut.gencat.cat/fhir/StructureDefinition/patient-dataBirhtDeath"
"country"
"724"
"state"
"08"

报错原因分析

你尝试简化的过滤器( ._birthDate.extension[0] | .url, ( .extension[:2] | .url, .valueString ) )中,.extension[:2]返回的是包含前2个extension元素的数组对象,而非单个JSON对象。jq不支持直接对数组使用字符串键url做索引,因此抛出Cannot index array with string "url"错误。

正确简化后的过滤器

只需要在.extension[:2]后添加[]将数组展开为逐个元素,再取对应属性即可:

._birthDate.extension[0] | .url, ( .extension[:2][] | .url, .valueString )

运行该过滤器即可得到和原始过滤器完全一致的预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:09