2016-02-02 6 views
31

folgende jq Befehl und Json Gegeben:Wie verwende ich jq, um die Zahl in eine Zeichenfolge zu konvertieren?

jq '.[]|[.string,.number]|join(": ")' <<< ' 
[ 
    { 
    "number": 3, 
    "string": "threee" 
    }, 
    { 
    "number": 7, 
    "string": "seven" 
    } 
] 
' 

Ich versuche, die Ausgabe zu formatieren als:

three: 3 
seven: 7 

Leider ist mein Versuch, in den folgenden Fehlern führt:

jq: error: string and number cannot be added

Wie konvertiere ich die Zahl in einen String, so dass beide zusammengefügt werden können?

Antwort

35

Der Befehl jq hat die Funktion tostring. Ich brauchte eine Weile, um zu lernen, es durch Versuch und Irrtum zu benutzen. Hier ist, wie es zu benutzen:

jq -r '.[] | [ .string, .number|tostring ] | join(": ")' <<< ' 
[{ "number": 9, "string": "nine"}, 
{ "number": 4, "string": "four"}] 
' 
nine: 9 
four: 4 
3

Ein alternatives und wohl intuitives Format ist:

jq '.[] | .string + ": " + (.number|tostring)' <<< ... 

Bemerkenswert die Notwendigkeit Pars um .number|tostring.

Verwandte Themen