Given the following jq command and Json:
jq \'.[]|[.string,.number]|join(\": \")\' <<< \'
[
{
\"number\": 3,
\"string\": \"threee\"
},
The jq command has the tostring function. It took me a while to learn to use it by trial and error. Here is how to use it:
jq -r '.[] | [ .string, .number|tostring ] | join(": ")' <<< '
[{ "number": 9, "string": "nine"},
{ "number": 4, "string": "four"}]
'
nine: 9
four: 4
use 'map_values' opearator to modify objects
Example
{"foo": {"bar": 3}}
.foo.bar = .foo.bar|map_values(tostring)
Output
{ "foo": { "bar": "3" } }
An alternative and arguably more intuitive format is:
jq '.[] | .string + ": " + (.number|tostring)' <<< ...
Worth noting the need for parens around .number|tostring
.
For such simple case string interpolation's implicit casting to string will do it:
.[] | "\( .string ): \( .number )"
See it in action on jq‣play.