如何使用 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)
只是想弄清楚这个简单的 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)