回答

收藏

如何在 shell 脚本中漂亮地打印 JSON?

技术问答 技术问答 358 人阅读 | 0 人回复 | 2023-09-11

是否有(Unix)shell 脚本以人类可读的形式格式化 JSON?# K; Q7 e4 v+ {+ H  B7 ]3 S- b
基本上,我希望它能转换以下内容:
/ w; n" u% j- G) @( B& h8 W
    { "foo": "lorem","bar": "ipsum" }
    # ?  Y4 A- ?- @3 D) O
…变成这样的东西:
; v( _& W. Z+ a$ c2 Z
    {    "foo": "lorem",   "bar": "ipsum"}$ Z1 m4 M' S; S, {
               
2 w( C/ V) _8 a* |5 n    解决方案:                                                               
9 v1 U' a4 @$ z8 R! p# u                                                                使用 Python 2.6 ,你可以:4 f4 V' s5 C! n, K# y0 x
    echo '{"foo": "lorem","bar": "ipsum"}' | python -m json.tool" m. s" F: B" H2 X
或者,如果 JSON 您可以在文件中执行以下操作:. P& U# _+ m$ ]
    python -m json.tool my_json.json
    * n4 U% W$ c/ }( s; u% k
如果 JSON 来自 Internet 源(如 API),您可以使用
5 e6 s$ a  k+ e% b5 h. s* j
    curl http://my_url/ | python -m json.tool
    7 ]: ]6 y# z& m- E2 [5 O
在所有这些情况下,为了方便起见,你可以创建一个别名:. ]. g  r, c$ ~  I
    alias prettyjson='python -m json.tool'! j, i! x( _" w' i0 z
为方便起见,请输入更多内容准备:
( `2 S; _+ `8 g
    prettyjson_s()      echo "$1" | python -m json.tool}prettyjson_f()      python -m json.tool "$1"}prettyjson_w()      curl "$1" | python -m json.tool}
    , z. t& V5 w. K" M6 l9 P# j( W/ z% c# Y
对于上述所有情况。你可以把它放进去。.bashrc,每次都可以在 shell 中使用prettyjson_s '{"foo": "lorem","bar": "ipsum"}'.- [% g8 j* F6 q4 b0 Q4 W4 j
请注意,就像@pnd 在下面的评论中指出, Python 3.5  中,JSON 对象默认不再排序。要排序,请将其排序--sort-keys将标志添加到末尾... | python -m json.tool --sort-keys。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则