回答

收藏

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

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

是否有(Unix)shell 脚本以人类可读的形式格式化 JSON?. ~9 N+ p! S4 I7 }9 z( l
基本上,我希望它能转换以下内容:
. m+ e. P. n5 ~9 i0 A. a  O/ }
    { "foo": "lorem","bar": "ipsum" }
    & f$ [8 ]; _5 J  k+ H0 M, t3 X
…变成这样的东西:
1 u2 f3 _, C& e
    {    "foo": "lorem",   "bar": "ipsum"}" R  z0 W) Z6 C; S7 e
               $ r7 p$ Z+ L6 ?/ l' g; s$ f
    解决方案:                                                                # H' V% ~% b! D0 h0 O2 ]
                                                                使用 Python 2.6 ,你可以:
* T6 m! c) K. m
    echo '{"foo": "lorem","bar": "ipsum"}' | python -m json.tool( ?; I1 V' E- g
或者,如果 JSON 您可以在文件中执行以下操作:1 X( u% ?7 P+ D  I, K" V
    python -m json.tool my_json.json
    2 H6 S; ]: i5 n" C/ ^
如果 JSON 来自 Internet 源(如 API),您可以使用7 x4 Q4 x1 y# h- t
    curl http://my_url/ | python -m json.tool% n) e, w" Z6 ~! O# X
在所有这些情况下,为了方便起见,你可以创建一个别名:4 L: H) Z4 h; d9 @$ Y4 y( o
    alias prettyjson='python -m json.tool'# K/ n1 q& L6 Y6 I1 F# @& i1 }* @$ }: j
为方便起见,请输入更多内容准备:
; |( N- ]/ B. v6 X5 _# p
    prettyjson_s()      echo "$1" | python -m json.tool}prettyjson_f()      python -m json.tool "$1"}prettyjson_w()      curl "$1" | python -m json.tool}
    5 Y# M- L' d4 R9 J! a
对于上述所有情况。你可以把它放进去。.bashrc,每次都可以在 shell 中使用prettyjson_s '{"foo": "lorem","bar": "ipsum"}'.& x( ]8 j- m7 u. N& H) u0 e/ j% F/ K' K
请注意,就像@pnd 在下面的评论中指出, Python 3.5  中,JSON 对象默认不再排序。要排序,请将其排序--sort-keys将标志添加到末尾... | python -m json.tool --sort-keys。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则