How to pretty print JSON in bash console
Recently i was playing with Swagger Codegen tool and i needed to look at available configuration fields for java
language. You can do it easily by running :
curl -X GET --header 'Accept: application/json' 'https://generator.swagger.io/api/gen/clients/java'
But, as an output, you'll get this :
{"sortParamsByRequiredFlag":{"opt":"sortParamsByRequiredFlag","description":"Sort method arguments to place required parameters before optional parameters.","type":"boolean","default":"true"},"ensureUniqueParams":{"opt":"ensureUniqueParams","description":"Whether to ensure parameter names are unique in an operation (rename parameters that are not).","type":"boolean","default":"true"}...
which is not readable at all. You would have to paste it into your favorite editor and then use prettyprint
plugin there for JSON.
Surpisingly, i managed to find an easy and simple way to fix that. You can just call :
curl -X GET --header 'Accept: application/json' 'https://generator.swagger.io/api/gen/clients/java' | python -m json.tool
And that's it! The result will be :
{
"sortParamsByRequiredFlag": {
"opt": "sortParamsByRequiredFlag",
"description": "Sort method arguments to place required parameters before optional parameters.",
"type": "boolean",
"default": "true"
},
"ensureUniqueParams": {
"opt": "ensureUniqueParams",
"description": "Whether to ensure parameter names are unique in an operation (rename parameters that are not).",
"type": "boolean",
"default": "true"
},
"allowUnicodeIdentifiers": {
"opt": "allowUnicodeIdentifiers",
"description": "boolean, toggles whether unicode identifiers are allowed in names or not, default is false",
"type": "boolean",
"default": "false"
},..
You don't have to install anything - it just works out of the box. ( Tested on Maco OS). You can add to your .aliases
file this command :
alias prettyjson='python -m json.tool'
And now you can use it as :
curl -X GET --header 'Accept: application/json' 'https://generator.swagger.io/api/gen/clients/java' | prettyjson
Of course, you can also have some functions created for it, but for now this is good enough for me.
Happy coding :)