jq (map(select))无法用字符串索引字符串"ID"退出状态 5



数据:

[{"id": "first", "val": 1}, {"id": "second", "val": 2}, {"id": "second", "val": 3}]

查询:

.[] | map(select(.id == "second"))

预期:

{"id": "second", "val": 2}, {"id": "second", "val": 3}

结果:

Cannot index string with string "id"

https://jqplay.org/jq?q=.%5B%5D%20%7C%20select(.id%20%3D%3D%20%22second%22(&j=%5B%7B%22id%22%3A%20%22first%22%2C%20%22val%220%3A%201%7D%2C%20%7B%22id=22%3A%20%22second%22%2C+20%22val%22%3A%02%7D%5D

为什么会出现这样的结果?

map(select(.id == "second"))需要一个对象数组,而.[]将它们从数组中取出,因此之后的所有内容都必须能够处理单个项。

在您的jqplay示例中,您的过滤器是.[] | select(.id == "second"),并且运行良好。

现在应该很清楚如何解决您的问题;(

最新更新