programing

jq를 사용하여 문자열을 JSON 파일에서 정수로 변환하려면 어떻게 해야 합니까?

showcode 2023. 3. 26. 11:56
반응형

jq를 사용하여 문자열을 JSON 파일에서 정수로 변환하려면 어떻게 해야 합니까?

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에는 기능이 내장되어 있습니다.키를 다음에 파이프 접속할 수 있습니다.

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

문서에 따르면:

tonumbertonumber함수는 입력을 숫자로 해석합니다.올바른 형식의 문자열이 해당 숫자 형식으로 변환되고 숫자는 그대로 유지되며 다른 모든 입력에 오류가 발생합니다.

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

(플로트로 변환되는) 문자열을 정수로 변환하려고 했습니다.토인트 기능을 찾고 있었는데 존재하지 않아요.

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

생성된 숫자가 정수인지 확인하기 위해 바닥에 바닥을 쳤습니다.

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

이렇게 하면 OP 원본 데이터도 올바르게 변환됩니다.결과가 정수임을 보증하려면 플로어링해야 합니다.

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

반응형