How to convert a string to an integer in a JSON file using jq?
jq
has inbuilt functions, you can pipe your key to tonumber
:
jq 'to_entries[]| {companyId: (.key)|tonumber, companyTitle: (.value.title), companyCode: (.value.booking_service_code)}' companies.json
As per the docs:
tonumber
Thetonumber
function parses its input as a number. It will convert correctly-formatted strings to their numeric equivalent, leave numbers alone, and give an error on all other input.
Example jq '.[] | tonumber' Input [1, "1"] Output 1 1
I was trying to turn my string (that converts to a float) to an integer. I was looking for a 'toint' function, one doesn't exist.
jq --arg str "1.435" -n '$str|tonumber'
1.435
I threw a floor in there to make sure the number that was created was an integer:
jq --arg str "1.435" -n '$str|tonumber|floor'
1
This also properly converts the OP original data as well. If you want to guarantee your result is an integer you will need to floor it.