【问题标题】:jq: get first n elements of an array fieldjq:获取数组字段的前 n 个元素
【发布时间】:2021-11-24 17:34:13
【问题描述】:

我在尝试仅获取数组的前 3 个元素时遇到了一些问题:

json 是这样的:

{
   "resourceType":"Practitioner",
   "id":"328001",
   "meta":{
      "versionId":"1",
      "lastUpdated":"2021-11-08T12:47:51.239+01:00",
      "source":"#BUkX5uagwf3PcHzd"
   },
   "identifier":[
      {
         "use":"official",
         "system":"urn:oid:1.3.6.1.4.1.19126.3",
         "value":"00396185X"
      },
      {
         "use":"official",
         "system":"urn:oid:2.16.724.4.9.10.2",
         "value":"0831515"
      },
      {
         "use":"official",
         "system":"urn:oid:2.16.724.4.9.10.2",
         "value":"0831515"
      },
      {
         "use":"official",
         "system":"urn:oid:2.16.724.4.9.10.2",
         "value":"0831515"
      }
   ],
   "active":true,
   "name":[
      {
         "use":"official",
         "text":"JULIAN RODRIGUEZ LARREA",
         "family":"RODRIGUEZ",
         "_family":{
            "extension":[
               {
                  "url":"http://hl7.org/fhir/StructureDefinition/humanname-mothers-family",
                  "valueString":"LARREA"
               }
            ]
         },
         "given":[
            "JULIAN"
         ]
      }
   ],
   "qualification":[
      {
         "code":{
            "coding":[
               {
                  "system":"urn:oid:2.16.840.1.113883.6.96",
                  "code":"62247001"
               }
            ]
         }
      }
   ]
}

有没有办法只获取前 3 个元素 od .identifier

jq -r '(.identifier[] | .system, .value)'

有什么想法吗?

【问题讨论】:

    标签: jq


    【解决方案1】:

    如果您只想在前 3 个结果中打印那些特定字段,请使用 slice operator。请参阅jqplay 进行演示

    .identifier[:3] | map({system, value})
    

    【讨论】:

    • 如果数组中的元素少于三个(如果有的话,返回可用的元素),这甚至可以工作。
    猜你喜欢
    • 2011-04-12
    • 2020-07-22
    • 1970-01-01
    • 2016-04-25
    • 2017-02-27
    • 2011-07-08
    • 2020-03-01
    • 1970-01-01
    相关资源
    最近更新 更多