Как можно преобразовать строковое значение и привести к числу с помощью jq - PullRequest
0 голосов
/ 08 марта 2020

Просто пытаюсь выяснить, как этот простой JSON фрагмент

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

может быть преобразован в

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

Я нашел в документации ссылку на функции, поддерживающие регулярное выражение, но Я не могу написать больше, чем это

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

1 Ответ

1 голос
/ 08 марта 2020

Вот один способ, который можно легко адаптировать к различным требованиям:

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)
...