J'utilise jq pour transformer un objet json complexe en un objet plus petit. Ma requête est:
jq 'to_entries[]| {companyId: (.key), companyTitle: (.value.title), companyCode: (.value.booking_service_code)}' companies.json
Maintenant le (.key)
est analysé comme une chaîne, mais je veux que companyId
soit un nombre.
Mon résultat ressemble actuellement à ceci:
{
"companyId": "1337",
"companyTitle": "Some company title",
"companyCode": "oxo"
}
mais cela devrait être comme:
{
"companyId": 1337,
"companyTitle": "Some company title",
"companyCode": "oxo"
}
jq
a des fonctions intégrées, vous pouvez diriger votre clé vers tonumber
:
jq 'to_entries[]| {companyId: (.key)|tonumber, companyTitle: (.value.title), companyCode: (.value.booking_service_code)}' companies.json
Selon les documents:
tonumber
La fonctiontonumber
analyse son entrée sous forme de nombre. Il convertira les chaînes correctement formatées en leur équivalent numérique, laissera les nombres seuls et donnera une erreur sur toutes les autres entrées.
Example jq '.[] | tonumber' Input [1, "1"] Output 1 1