如何使用 jq 将字符串值转换并转换为数字

How can a string value be transformed and cast to number using jq

只是想弄清楚这个简单的 JSON 片段如何

[{ "rooms": "2 Rooms" }, { "rooms": "3 Rooms" }]

转化为

[{ "rooms": 2 }, { "rooms": 3 }]

我在文档中找到了对支持 regexp 的函数的引用,但我不能写更多了

[.[] | { "rooms": .rooms } ]

这是一种可以轻松适应不同要求的方法:

def extractNumber: gsub("[^0-9]";"") | tonumber;

map( map_values(extractNumber) )

概括

def extractNumber:
  . as $in 
  | gsub("[^0-9]";"")
  | if length == 0 then $in else tonumber end;

walk(if type == "object" then map_values(extractNumber) else . end)