回答

收藏

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

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

是否有(Unix)shell 脚本以人类可读的形式格式化 JSON?
+ G6 z! @1 W, u& M. h基本上,我希望它能转换以下内容:
8 v' t9 d- |! e% k8 P8 K
    { "foo": "lorem","bar": "ipsum" }: ]. B9 M* `1 U  ~% M
…变成这样的东西:4 O* j; q! c! o2 X2 b3 o1 u
    {    "foo": "lorem",   "bar": "ipsum"}
    # N/ v5 q: V# g
               
% ?. u/ t* c+ A4 A    解决方案:                                                                : A( n# M9 e; ~8 Z. b) y
                                                                使用 Python 2.6 ,你可以:
3 S9 s8 B7 a( J
    echo '{"foo": "lorem","bar": "ipsum"}' | python -m json.tool  F, Q3 u# I; B7 T6 l. o7 u
或者,如果 JSON 您可以在文件中执行以下操作:
* U  S- J& \. |' q: R
    python -m json.tool my_json.json" G: ], O1 d) C9 Q+ W6 J+ j* O
如果 JSON 来自 Internet 源(如 API),您可以使用3 r& K9 B) v) I; z- Q" P+ [! ^5 j
    curl http://my_url/ | python -m json.tool
    8 G: L& ^! Y  n
在所有这些情况下,为了方便起见,你可以创建一个别名:$ q' a" ^& W  D& J3 i' l
    alias prettyjson='python -m json.tool'- L6 ?7 L0 H& @9 T
为方便起见,请输入更多内容准备:
/ e+ d8 |) }0 T. f4 v
    prettyjson_s()      echo "$1" | python -m json.tool}prettyjson_f()      python -m json.tool "$1"}prettyjson_w()      curl "$1" | python -m json.tool}
    8 a# p1 L0 E, {# t7 M
对于上述所有情况。你可以把它放进去。.bashrc,每次都可以在 shell 中使用prettyjson_s '{"foo": "lorem","bar": "ipsum"}'.
" h1 R4 j! h4 b6 O! x+ I' R( K, c请注意,就像@pnd 在下面的评论中指出, Python 3.5  中,JSON 对象默认不再排序。要排序,请将其排序--sort-keys将标志添加到末尾... | python -m json.tool --sort-keys。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则