Check for valid json string or file with jq
Verifying if a string or file is valid json is easy with jq.
Check if a string is valid json
Using the -e argument, jq will return a 0 if the last output was neither false nor null.
1if jq -e . >/dev/null 2>&1 <<<'{"test": "value"}'; then
2 echo "parsed successfully"
3else
4 echo "could not parse json string"
5fiIn addition, negating the above condition may increase readability:
1if ! jq -e . >/dev/null 2>&1 <<<'{"test": "value"}'; then
2 echo "could not parse json string"
3 exit 1
4fiUsing a variable:
1if ! jq -e . >/dev/null 2>&1 <<<"$json"; then
2 echo "could not parse json string"
3 exit 1
4fiCheck if a file is valid json
Using the same technique from above:
1if ! jq -e . >/dev/null 2>&1 <<<$(cat invalid.json); then
2 echo "could not parse json file"
3 exit 1
4fithe invalid.json file:
1{ "invalid"will output:
1could not parse json file