How to convert a string to an integer in a JSON file using jq?

て烟熏妆下的殇ゞ 提交于 2020-01-11 08:05:29

问题


I use jq to transform a complex json object into a tinier one. My query is:

jq 'to_entries[]| {companyId: (.key), companyTitle: (.value.title), companyCode: (.value.booking_service_code)}' companies.json

Now, the (.key) is parsed as a string, yet I want companyId to be a number.

My result currently looks like this:

{
  "companyId": "1337",
  "companyTitle": "Some company title",
  "companyCode": "oxo"
}

yet it should be like:

{
  "companyId": 1337,
  "companyTitle": "Some company title",
  "companyCode": "oxo"
}

回答1:


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 The tonumber 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



来源:https://stackoverflow.com/questions/48887711/how-to-convert-a-string-to-an-integer-in-a-json-file-using-jq

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!