jq の入っていない環境で、JSON をフォーマットする方法
JSON をフォーマットしたいけど、jq が入っていない!ということがよくあります。
そういう時は、Ruby や PHP を使いましょう!
Ruby の場合
ruby -rjson -e 'puts JSON.pretty_generate(JSON.parse(STDIN.read))'
↓ こんな風に表示されます!
[qiita@example ~]$ echo '{"key": {"format": ["json", "XML"]}}' \ | ruby -rjson -e 'puts JSON.pretty_generate(JSON.parse(STDIN.read))' { "key": { "format": [ "json", "XML" ] } }
また、JSON.parse(STDIN.read)["key"]
とすることで、特定の項目だけ表示することもできます。
[qiita@example ~]$ echo '{"key": {"format": ["json", "XML"]}}' \ | ruby -rjson -e 'puts JSON.pretty_generate(JSON.parse(STDIN.read)["key"])' { "format": [ "json", "XML" ] }
PHP の場合
php -r 'echo json_encode(json_decode(stream_get_contents(STDIN)), JSON_PRETTY_PRINT);'
↓ こんな風に表示されます!
[qiita@example ~]$ echo '{"key": {"format": ["json", "XML"]}}' \ | php -r 'echo json_encode(json_decode(stream_get_contents(STDIN)), JSON_PRETTY_PRINT);' { "key": { "format": [ "json", "XML" ] } }
また、json_decode(stream_get_contents(STDIN))->key
とすることで、特定の項目だけ表示することもできます。
[qiita@example ~]$ echo '{"key": {"format": ["json", "XML"]}}' \ | php -r 'echo json_encode(json_decode(stream_get_contents(STDIN))->key, JSON_PRETTY_PRINT);' { "format": [ "json", "XML" ] }