是否有可以美化 JSON 字元串的 CLI 工具
在我的主機上,我輸入以下內容,它會返回一堆在 CLI 上不太容易閱讀的資訊。
echo $ENV_VAR | base64 --decode
有沒有辦法格式化?
這是命令的範例輸出。
{“某物”:
$$ {“path”: “something”, “host”: “something.internal”, “scheme”: “solr”, “port”: 8080, “ip”: “123.4.567.89”} $$,“第二個數據庫”:$$ {“username”: “user”, “password”: “”, “ip”: “123.4.567.89”, “host”: “second_database.internal”, “query”: {“is_master”: true}, “path”: “main”, “scheme”: “mysql”, “port”: 3306} $$,“redis”:$$ {“ip”: “123.4.567.89”, “host”: “redis”, “scheme”: “redis”, “port”: 6379} $$,“數據庫”:$$ {“username”: “user”, “password”: “”, “ip”: “123.4.567.89”, “host”: “database.internal”, “query”: {“is_master”: true}, “path”: “main”, “scheme”: “mysql”, “port”: 3306} $$}
可能值得指出的是,我的主機和許多主機一樣,提供只讀文件系統。
cat file.json | json_pp #perl utility cat file.json | jq .
jq包含的不僅僅是漂亮的列印功能。
我會將它輸入
yaml
(這是我是作者的ruamel.yaml的一部分):echo $ENV_VAR | base64 --decode | yaml from-json -
會給你這個(基於你的範例輸出):
second_database: - username: user password: '' ip: 123.4.567.89 host: second_database.internal path: main query: is_master: true scheme: mysql port: 3306 redis: - ip: 123.4.567.89 host: redis scheme: redis port: 6379 something: - path: something host: something.internal scheme: solr port: 8080 ip: 123.4.567.89 database: - username: user password: '' ip: 123.4.567.89 host: database.internal path: main query: is_master: true scheme: mysql port: 3306
不能保證鍵的順序,因為在 json 中不能保證,而且我沒有
ruamel.json
像這樣的包ruamel.yaml
在讀取時保留順序json
。上面的工作原理是 YAML 是 JSON 的超集,但具有更可讀的顯示模式(在非絕對必要時省略引號,製作縮進塊結構)。