簡體   English   中英

如何使用jq將JSON文件中的字符串轉換為整數?

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

我使用 jq 將復雜的 json 對象轉換為更小的對象。 我的查詢是:

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

現在, (.key)被解析為字符串,但我希望companyId是一個數字。

我的結果目前看起來像這樣:

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

但它應該是這樣的:

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

jq具有內置功能,您可以將您的密鑰通過管道tonumbertonumber

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

根據文檔:

tonumber tonumber函數將其輸入解析為數字。 它會將格式正確的字符串轉換為其等效的數字,不理會數字,並對所有其他輸入給出錯誤。

Example jq '.[] | tonumber' Input [1, "1"] Output 1 1

我試圖將我的字符串(轉換為浮點數)轉換為整數。 我正在尋找一個“toint”功能,一個不存在。

jq --arg str "1.435" -n '$str|tonumber'
1.435

我在那里扔了一個地板,以確保創建的數字是一個整數:

jq --arg str "1.435" -n '$str|tonumber|floor'
1

這也正確地轉換了 OP 原始數據。 如果你想保證你的結果是一個整數,你需要對它進行下限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM