![](/img/trans.png)
[英]How to split a string value in json and convert to nested objects using jq?
[英]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
具有內置功能,您可以將您的密鑰通過管道tonumber
到tonumber
:
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.