Can I pass a string variable to jq not the file?

Maciek Rek picture Maciek Rek · Nov 3, 2017 · Viewed 32.4k times · Source

I want to convert JSON string into an array in bash. The JSON string is passed to the bash script as an argument (it doesn't exist in a file).

Is there a way of achieving it without using some temp files?

Similarly to this:

script.sh

#! /bin/bash
json_data='{"key":"value"}'
jq '.key' $json_data

jq: error: Could not open file {key:value}: No such file or directory

Answer

jq170727 picture jq170727 · Nov 4, 2017

I would suggest using a bash here string. e.g.

jq '.key' <<< "$json_data"