回答

收藏

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

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

是否有(Unix)shell 脚本以人类可读的形式格式化 JSON?
9 e9 r( i6 [4 i- ?# x' e, O% @; r. e基本上,我希望它能转换以下内容:
0 M5 q2 X7 S9 {! a1 C  }4 g
    { "foo": "lorem","bar": "ipsum" }
    % t+ D2 b+ q2 U
…变成这样的东西:6 i3 j' t) L& J: V( d# P$ \0 n! Q" I
    {    "foo": "lorem",   "bar": "ipsum"}8 |# W" J" d7 r9 R
               
. b3 j9 P, n3 ~' a9 V    解决方案:                                                               
5 M& y" E# B- [, Y3 o                                                                使用 Python 2.6 ,你可以:
) z' G! D" ^; G+ U% l; d* i
    echo '{"foo": "lorem","bar": "ipsum"}' | python -m json.tool
    4 u6 E: v# j' C* C& z+ {4 y* h- R, j
或者,如果 JSON 您可以在文件中执行以下操作:
; s% P5 i0 h% T/ t  Q& g2 E5 v$ J
    python -m json.tool my_json.json
    0 F1 f: w; q  c: F9 G0 S* u& J
如果 JSON 来自 Internet 源(如 API),您可以使用. F+ X3 Y/ }1 D! j7 l* F
    curl http://my_url/ | python -m json.tool! t4 i) N+ M  ]  L$ q4 B
在所有这些情况下,为了方便起见,你可以创建一个别名:
/ E% O5 O+ a" p/ V
    alias prettyjson='python -m json.tool'
    % T. Z% t. g' ?
为方便起见,请输入更多内容准备:
, c" L+ h* E" _: p# v5 v0 C
    prettyjson_s()      echo "$1" | python -m json.tool}prettyjson_f()      python -m json.tool "$1"}prettyjson_w()      curl "$1" | python -m json.tool}5 E2 Z7 g* y( k! T/ a/ S. G6 |$ ^
对于上述所有情况。你可以把它放进去。.bashrc,每次都可以在 shell 中使用prettyjson_s '{"foo": "lorem","bar": "ipsum"}'.
3 Q8 g' S. d; d+ M) _5 [% c请注意,就像@pnd 在下面的评论中指出, Python 3.5  中,JSON 对象默认不再排序。要排序,请将其排序--sort-keys将标志添加到末尾... | python -m json.tool --sort-keys。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则