【发布时间】:2022-11-11 19:04:54
【问题描述】:
我正在尝试过滤此对象列表,并仅返回 firstName 以特定值开头的对象。
[
{"firstName":"Paul","lastName":"Collins"},
{"firstName":"Jerry","lastName":"Johnson"},
{"firstName":"Jody","lastName":"Johnson","occupation":"Occupado","company":"Companio"},
{"firstName":"Paul","lastName":"Johanson","occupation":"Developer","company":"Developer Co"}
]
我得到的最远的是:
([].firstName | [?starts_with(@,'J') == `true`])
返回:
[
"Jerry",
"Jody"
]
但是,我想返回符合此条件的整个对象,而不仅仅是 firstName 字段。我想要的输出是:
[
{"firstName":"Jerry","lastName":"Johnson"},
{"firstName":"Jody","lastName":"Johnson","occupation":"Occupado","company":"Companio"},
]
我找不到将字符串数组传递给starts_with 的方法。我可以从返回中获取值并将它们插入到多个查询中,一个查询带有一堆"|| firstName == name1 || firstName == name2"。但是我想尝试在一个查询字符串中执行此操作。
有任何想法吗?
【问题讨论】:
-
请注意 jq 和 JMESPath 是两个完全不同的野兽。您希望使用哪一个?
-
我可以使用任何一个。我不确定在 jmespath 中是否可行,因此对 jq 中的建议持开放态度。现在已经回答了,我将删除 jq 标签
-
好吧,现在你有一个问题,因为你有两个不同但有效的答案:)